¿Qué proyecto PHP de código abierto tiene el diseño OOP 'perfecto' del que puedo aprender? [cerrado]

9

Soy un novato en OOP, y aprendo mejor con el ejemplo.

Se podría decir que esta pregunta es similar a los proyectos de código abierto de Scala que debería estudiar para aprender las mejores prácticas de codificación , pero en PHP.

He oído decir que Symfony tiene la mejor 'arquitectura' (no voy a fingir que sé exactamente lo que eso significa), así como Doctrine ORM. ¿Vale la pena pasar muchos meses leyendo el código fuente de estos proyectos, tratando de deducir los patrones utilizados y aprendiendo nuevos trucos?

He visto la misma cantidad de páginas web deshabilitando y gustando la base de código de Zend (proporcionará enlaces si se considera necesario).

¿Conoces algún otro proyecto que haría que cualquier desarrollador veterano de OOP derramara lágrimas de alegría?

Permítanme agregar que la practicidad y el alcance de uso no son una preocupación en absoluto aquí, solo quiero hacer:

  • Elija un proyecto que tenga una base de código considerada impresionante por los desarrolladores mucho mejor y mayor que yo.
  • Escriba código que logre lo que hace el proyecto.
  • Compare los resultados e intente aprender lo que no sé.

Básicamente, una base de código de interés académico. ¿Alguna recomendación por favor?

Aditya MP
fuente
44
No soy un experto, pero no creo que la POO sea común o necesariamente alentada en PHP.
asfallows
3
@asfallows De hecho, ese fue el caso, pero con el lanzamiento de PHP 5.3, las cosas están cambiando y hay una inclinación definitiva hacia el uso de todas las nuevas funciones que el lenguaje proporciona para la codificación OOP.
Aditya MP
3
No existe el "diseño perfecto de OOP".
Robert Harvey
1
Veo que ya eres miembro de Code Review Stack Exchange. Úselo ampliamente, es el intercambio de pila más valioso cuando aprende, nos encantaría ver y discutir el código que escribirá mientras aprende sobre OOP ...
yannis 05 de
1
@Arkh Harsh. Intentemos abstenernos de ataques personales. Si no está de acuerdo con asfallows, tómese el tiempo para escribir un comentario bien escrito.

Respuestas:

2

Symfony 2 es probablemente el mejor proyecto grande para aprender, pero es bastante grande.

Recientemente encontré un proyecto PHP limpio y pequeño de código abierto llamado Phrozn (generador de sitio estático). Su código base es relativamente pequeño, por lo que puede examinarlo bastante rápido.

ACTUALIZAR:

Phrozn es moderno (usa PHP 5.3+ y depende mucho de él), es extensible, tiene una cobertura de código estricta. También reutiliza el código de otros proyectos bien escritos como Symfony (YAML), Zend (Autoloader), PEAR y Twig.

OOP, usa espacios de nombres y está muy bien documentado. No digo que sea perfecto ni que se pueda comparar con un proyecto como Symfony, pero vale la pena intentarlo.

Christian P
fuente
1
¿Puede darnos algunos detalles más sobre la base de código de Phrozn? ¿Qué lo hace ideal para estudiar, aparte de su tamaño?
Yannis
1
@YannisRizos :) El código se puede encontrar en github, por lo que puede echar un vistazo rápido. github.com/farazdagi/phrozn
Christian P
17

Bueno, personalmente diría que echa un vistazo a Symfony2 . Es prácticamente el mejor proyecto grande de extremo a extremo que he visto hasta ahora. Eso no quiere decir que no tenga partes malas, pero en general es bastante bueno.

Ahora, Zend está en el medio. Si miras la API pública, es bastante buena. Hay algunas partes de WTF, pero en su mayor parte está bien. Si comienzas a profundizar más en él, encontrarás MUCHO más código WTF ...

En cuanto a qué evitar directamente:

  • CodeIgniter - Modelo Fubar MVC
  • Kohana - Mucha estática
  • Cake - Semántica de objetos PHP 4
  • Drupal - No OOP en absoluto
  • Wordpress - No OOP en absoluto

En cuanto al resto, encontrarás que es impredecible. Hay partes buenas y malas en todos los diseños. Eche un vistazo a Lithium , tiene algunos conceptos de diseño realmente geniales. Pero también tiene mucha redirección de fubar y piratería para que eso funcione.

Y eso es lo que llevar al banco. No hay un diseño perfecto, no intentes encontrar uno. En cambio, mira muchos de ellos y decide por ti mismo. Pruebe cada uno, intente romperlos. Trate de entenderlos con solo leerlos (lo cual es una buena prueba de diseño sensato) ...

Solo mi opinión personal ...

ircmaxell
fuente
2
+1 para symfony2, pero lo más importante, toda la comunidad construye a su alrededor. Probablemente también valga la pena mencionar ZF2, aunque parecen mantener las cosas más abstractas.
Adrian Schneider
1
+1 para symfony2 también. Tiene una base de código realmente sólida, utiliza muchas mejores prácticas de otros lenguajes y marcos, una gran comunidad, los desarrolladores principales son personas útiles y accesibles. Aunque el desarrollo continúa con la refactorización de las cosas en el camino para mejorarlas, el estado actual está listo para la producción. Fabien Potencier, el creador de Symfony, tiene una serie de publicaciones de blog ( fabien.potencier.org ) sobre la creación de un marco con componentes de Symfony. Debería ser un buen punto de partida, ya que escribió estas publicaciones para ayudar a las personas a aprender cosas.
Hakan Deryal
Leer el código fuente de Symfony2 es realmente una inspiración, aunque no es demasiado complejo de entender, buen punto. Sin embargo, no está desarrollado TDD, lo que probablemente sería una piedra angular para el diseño "perfecto" de OOP ", porque ningún diseño es perfecto, lo que significa que necesita cambiarlo y para eso necesita las pruebas.
Hakre 05 de
2
Bueno, no puedes comparar Symfony, Zend o Kohana con Wordpress y Drupal, en serio.
Daniel Ribeiro
¡Gracias! He descargado Symfony, comenzaré a entenderlo. Gracias por confirmar mis temores acerca de CodeIgniter: una vez escuché en SilverStripe IRC que "CodeIgniter es un marco de OOP para principiantes y comete muchos errores para principiantes", y comenzaron a escribir en PHP4, pero no han tenido el tiempo para refactorizar por lo tanto Dudo que hayan utilizado todas las excelentes características que ofrece este lenguaje. ¡Tenga en cuenta que NO estoy ignorando CI! Me encanta el marco y el cielo sabe cuántos proyectos me resultaron más fáciles porque lo usé. Pero para un propósito de aprendizaje podría no ser el mejor.
Aditya MP