Quale progetto PHP open source ha il design OOP "perfetto" da cui posso imparare? [chiuso]


9

Sono un principiante di OOP e imparo meglio con l'esempio.

Potresti dire che questa domanda è simile ai progetti open source Scala che dovrei studiare per imparare le migliori pratiche di codifica , ma in PHP.

Ho sentito dire che Symfony ha la migliore "architettura" (non pretendo di sapere cosa significhi esattamente), così come Doctrine ORM. Vale la pena dedicare molti mesi alla lettura del codice sorgente di questi progetti, cercando di dedurre gli schemi utilizzati e apprendere nuovi trucchi?

Ho visto un numero uguale di pagine Web che dissing e gradiscono la base di codice di Zend (fornirà collegamenti se ritenuto necessario).

Conosci qualche altro progetto che possa far piangere di gioia uno sviluppatore OOP veterano?

Per favore, lasciatemi aggiungere che la praticità e l'ambito di utilizzo non sono affatto una preoccupazione qui - Voglio solo fare:

  • Scegli un progetto che ha una base di codice ritenuta fantastica dagli sviluppatori molto meglio e più grande di me.
  • Scrivi il codice che realizza ciò che fa il progetto.
  • Confronta i risultati e prova ad imparare ciò che non conosco.

Fondamentalmente, una base di codice di interesse accademico. Qualche consiglio per favore?


4
Non sono un esperto, ma non credo che OOP sia comune o necessariamente incoraggiato in PHP.
Asfallows

3
@asfallows In effetti è stato così - ma con il rilascio di PHP 5.3, le cose stanno cambiando e c'è un'inclinazione definitiva verso l'utilizzo di tutte le nuove funzionalità di spanking fornite dal linguaggio per la codifica OOP.
Aditya MP

3
Non esiste un "perfetto design OOP".
Robert Harvey,

1
Vedo che sei già membro di Exchange Stack Code Review. Usalo ampiamente, è lo Stack Stack più prezioso durante l'apprendimento, ci piacerebbe vedere e discutere il codice che scriverai mentre imparerai a conoscere OOP ...
yannis,

1
@Arkh Harsh. Proviamo ad astenerci dagli attacchi personali. Se non sei d'accordo con le asfallow, prenditi il ​​tempo per scrivere un commento ben scritto.

Risposte:


2

Symfony 2 è probabilmente il miglior progetto di grandi dimensioni da cui imparare ma è piuttosto grande.

Recentemente ho trovato un piccolo e pulito progetto PHP open source chiamato Phrozn (generatore di siti statici). La sua base di codice è relativamente piccola, quindi puoi esaminarla abbastanza velocemente.

AGGIORNARE:

Phrozn è moderno (usa PHP 5.3+ e si basa molto su di esso), è estensibile, ha una rigida copertura del codice. Riutilizza anche il codice di altri progetti ben scritti come Symfony (YAML), Zend (Autoloader), PEAR e Twig.

OOP, utilizza gli spazi dei nomi ed è molto ben documentato. Non sto dicendo che sia perfetto né che possa essere paragonato a un progetto come Symfony ma vale la pena provare.


1
Puoi darci qualche dettaglio in più sulla base di codice di Phrozn? Cosa lo rende ideale per lo studio, oltre alle dimensioni?
yannis,

1
@YannisRizos :) Il codice può essere trovato su github, quindi puoi dare una rapida occhiata. github.com/farazdagi/phrozn
Christian P,

17

Bene, personalmente direi di dare un'occhiata a Symfony2 . È praticamente il miglior progetto end-to-end che abbia mai visto. Questo non vuol dire che non ci siano parti cattive, ma nel complesso è abbastanza buono.

Ora, Zend è nel mezzo. Se guardi l'API pubblica, è abbastanza buono. Ci sono alcune parti WTF, ma per la maggior parte va bene. Se inizi a scavare di più, troverai MOLTO più codice WTF ...

Per quanto riguarda cosa evitare apertamente:

  • CodeIgniter - Modello Fubar MVC
  • Kohana - Un sacco di statica
  • Cake - PHP 4 semantica dell'oggetto
  • Drupal - Non OOP affatto
  • Wordpress - OOP affatto

Per il resto, scoprirai che è incostante. Ci sono parti buone e cattive in tutti i disegni. Dai un'occhiata al litio , ha alcuni concetti di design davvero interessanti. Ma ha anche un sacco di reindirizzamento fubar e hacker per farlo funzionare.

Ed è quello che portare in banca. Non esiste un design perfetto, non cercare di trovarne uno. Invece, guardane molti là fuori e decidi tu stesso. Prova ciascuno, prova a romperli. Cerca di capirli semplicemente leggendoli (che è un buon test di progettazione sana) ...

Solo la mia opinione personale ...


2
+1 per symfony2, ma soprattutto, l'intera comunità che lo circonda. Probabilmente vale la pena menzionare anche ZF2, anche se sembrano mantenere le cose più astratte.
Adrian Schneider,

1
+1 anche per symfony2. Ha una base di codice davvero solida, utilizza molte buone pratiche da altre lingue e framework, una grande comunità, sviluppatori di base sono persone utili e raggiungibili. Sebbene lo sviluppo stia proseguendo con il refactoring delle cose per renderle migliori, lo stato attuale è pronto per la produzione. Fabien Potencier, il creatore di Symfony, ha una serie di post sul blog ( fabien.potencier.org ) sulla creazione di un framework con i componenti di Symfony. Dovrebbe essere un buon punto di partenza, poiché ha scritto questo post per aiutare le persone a imparare cose.
Hakan Deryal,

La lettura del codice sorgente di symfony2 è in realtà un'ispirazione pur non essendo troppo complessa da comprendere, buon punto. Tuttavia non è sviluppato TDD, che probabilmente sarebbe una pietra miliare per il design "perfetto" OOP "" - perché nessun design è perfetto, il che significa che è necessario modificarlo e per questo sono necessari i test.
hakre,

2
Bene, non puoi confrontare seriamente Symfony, Zend o Kohana con Wordpress e Drupal.
Daniel Ribeiro,

Grazie! Ho scaricato Symfony, inizierò a capirlo. Grazie per aver confermato le mie paure su CodeIgniter: una volta ho sentito sul SilverStripe IRC che "CodeIgniter è un OOP Framework per principianti e fa molti errori per principianti" - e hanno iniziato a scrivere in PHP4, ma non ho avuto il tempo di fare un ampio refactoring Dubito che abbiano utilizzato tutte le fantastiche funzionalità offerte da questa lingua. Si prega di notare che NON sto dissing CI! Adoro il framework e il paradiso sa quanti progetti sono diventati più facili per me perché l'ho usato. Ma per uno scopo di apprendimento potrebbe non essere il migliore.
Aditya MP
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.