Orientamento degli oggetti fatto bene con PHP [chiuso]

0

Ho iniziato a lavorare sullo sviluppo web usando PHP come linguaggio di programmazione lato server. In quel momento non conoscevo i vantaggi dell'orientamento agli oggetti e avevo difficoltà a cercare di scrivere codice più gestibile (ad esempio, dividere la presentazione dalla logica e così via).

Dopo alcuni anni ho saputo di ASP.NET MVC e ho provato. Ho imparato a lavorare con il plataform .NET usando il linguaggio di programmazione C # e ho trovato davvero fantastico quanto le mie applicazioni possano essere meglio strutturate usando un buon orientamento agli oggetti (per esempio l'iniezione delle dipendenze era qualcosa che quando l'ho visto per la prima volta ho pensato : "è tutto ciò di cui ho sempre bisogno").

Il punto è che sebbene io sia felice di lavorare con ASP.NET MVC, in alcuni progetti ho ancora bisogno di lavorare con PHP, tuttavia mi chiedevo se fosse possibile portare tutti i benefici dall'orientamento agli oggetti a PHP. Non ho trovato il modo di farlo da solo perché, ad esempio, PHP non è strongmente digitato in modo che diventi un po 'complicato fare uso dell'iniezione delle dipendenze come ho imparato lavorando con ASP.NET MVC. Inoltre, molte delle cose che ho imparato lavorando con MVC in ASP.NET anche se molto interessanti e utili non ho trovato il modo di fare lo stesso in PHP.

Ora arriva la domanda: qualcuno conosce le risorse per imparare come trarre vantaggio da tutte le cose interessanti da OOP a PHP? Sono interessato a qualsiasi risorsa: libri, tutorial, video, ecc.

Grazie mille in anticipo, e scusa se questa domanda è sciocca.

    
posta user1620696 08.05.2013 - 01:20
fonte

2 risposte

3

Sì, è abbastanza possibile, ed è il modo in cui stanno andando le cose. La comunità PHP sembra muoversi maggiormente verso uno stile Java (strongmente orientato agli oggetti, prolisso, ecc.).

PHP nel modo giusto

Alcune cose degne di nota ...

  • Codice di dominio (dopo 5.3)
  • Denominazione / gestione file standard come da php standard group (PSR-0)
  • Gestione delle dipendenze con Composer (come Ruby Gems, moduli Node Node, ecc.)
  • Contenitore di iniezione delle dipendenze (Symfony's è come la primavera di Java), o Brufolo, ecc.
  • ORM (Doctrine2 è come Hibernate di Java)
  • Test automatici con PHPUnit, Behat, ecc.

In realtà è un bel ecosistema se si utilizza il nuovo set di strumenti.

    
risposta data 08.05.2013 - 08:14
fonte
1

Per sviluppare siti Web con PHP utilizzando un approccio OOP avrai bisogno di quanto segue.

  1. phpStorm ti consentirà di applicare dettagli di tipo ai tuoi oggetti, metodi e variabili tramite PHPDocs. Mentre altri IDE supportano questo, phpStorm è stato l'unico che sembra funzionare correttamente nella mia esperienza (NetBeans non funziona proprio). I dettagli del tipo sono necessari per sfruttare appieno la programmazione OOP, perché senza di esso semplicemente non si sa cosa fa realmente $ obj- > doThing ().

  2. PHP OOP funziona meglio con namespace e ben pensato programmi di caricamento classe . Un approccio popolare è quello di strutturare classi e file in un modello simile ai pacchetti Java.

  3. Che cos'è OOP? Questa è una domanda molto ampia. Esistono schemi di progettazione, sintassi e framework specifici della lingua. È difficile dire che il codice in PHP è OOP. A che punto diventa OOP? C # impone un approccio OOP perché i servizi web lo richiedono. È ancora possibile sviluppare una soluzione OOP mal progettata in C #, ma un approccio non-OOP molto ben progettato in PHP. OOP di per sè non è la soluzione a tutto.

  4. Non l'ho usato, ma penso che CodeIgniter usi un approccio OOP nel suo design. Le dichiarazioni di controllori, modelli e viste sono basate sull'astrazione. CakePHP è anche un approccio OOP, ma utilizza molti trucchi di PHP per accorciare il lavoro degli sviluppatori. Di conseguenza, spesso non segue quello che ritengo essere un vero design OOP, ma è un ottimo framework.

  5. La mancanza PHP di variabili tipizzate e parametri per i metodi è uno dei suoi punti deboli in OOP. È un problema di scala. OOP è uno strumento che ti consente di ridimensionare i tuoi problemi costruendo pezzi che si adattano tra loro. Cosa succede quando hai bisogno di rifattorizzare il metodo di una classe base in PHP? Il rischio di introdurre un nuovo bug è molto alto, mentre in C # si rompe il contratto di interfaccia in fase di compilazione. Il rischio è molto basso. Quindi progettare classi e metodi in PHP è una pratica in attenta riflessione, piuttosto che programmare la sperimentazione del tempo. Se segui le linee guida per scrivere i commenti di PHPDoc, dichiara i tuoi tipi di parametri e usa phpStorm. Sarai in grado di gestire un design OOP più grande quindi utilizzare altri strumenti (nella mia mente).

risposta data 08.05.2013 - 01:55
fonte

Leggi altre domande sui tag