8

Recientemente me interesé en el diseño adecuado de OOP en aplicaciones web. Creo que entiendo la mayoría de los principios y patrones de diseño, pero a veces tengo problemas para ponerlos en práctica.Proyecto PHP con excelente diseño OOP para fines de estudio

Uso MVC y creo que puedo diseñar controladores y vistas en modo OOP. El problema que enfrento es con modelos. Estoy particularmente obsesionado con la inyección de dependencia y la inversión de control en general. Funciona bien en pequeños ejemplos, pero tengo problemas para diseñar complejos modelos multicapa. Estoy pensando en varias maneras de inyectar dependencias en capas inferiores, etc.

Así que decidí buscar algunos proyectos hechos por programadores OOP más experimentados que yo podría estudiar Estoy buscando una aplicación web PHP, preferiblemente hecha con un patrón arquitectónico MVC. Además, no me importa si tiene un modelo anémico (que generalmente se considera antipatrina, pero en aplicaciones basadas en datos pesados ​​a menudo me veo obligado a usar modelos anémicos).

Muchas gracias.

EDITAR: No estoy buscando un marco sino una aplicación completa. Los marcos generalmente no tienen mucho que ver con la arquitectura del modelo.

Respuesta

1

Magento Commerce tiene modelos complejos de varias capas (www.magentocommerce.com) de los que puedes sacar un truco o dos.

Pero mi experiencia (personal) con Magento fue frustrante: estaba pirateando con la versión 0.8-1.1 y parecía sobre ingeniería y poco documentada. Tratar de descubrir cómo funcionaba realmente era complejo: terminarías con toneladas de archivos abiertos en tu editor, la mayoría de ellos llamados Abstract.php. Con suerte, las cosas han mejorado mucho desde entonces.

+0

Hola, gracias por la sugerencia, esto realmente podría ser bueno. Creo que "terminarías con toneladas de archivos abiertos en tu editor, la mayoría de ellos llamados Abstract.php" es un precio que debes pagar si quieres un buen diseño. Desafortunadamente, los buenos diseños de OOP generalmente no son triviales. Por otro lado, ¡la complejidad no garantiza la calidad! : D – Tomik

-1

El marco CodeIgniter viene a la mente como fuente de estudio decente

+0

Gracias, pero no estoy buscando un marco sino para una aplicación completa. Los marcos tratan los modelos solo superficialmente (o no funcionan en absoluto). – Tomik

+3

@Tomik ¿Cómo? Parece una especie de afirmación general sobre "marcos" en general. En mi experiencia, CodeIgniter maneja perfectamente la separación de capas a la vez que es liviano y ordenado. – treeface

+0

Tienes que estar bromeando. CodeIgniter es el diseño OOP excelente. Solo mire la dependencia de _everything_ en el súper objeto CodeIgniter. –

4

El encendedor de código es php4, no lo recomiendo demasiado. PHP OOP ha cambiado desde entonces. Una mejor idea sería kohana

he aprendido mucho por el control de Konstrukt. El creador también es semi-activo en SO =)

0

Si está buscando un "excelente diseño OOP", probablemente esté buscando en la esquina equivocada. PHP no es muy fuerte en sus patrones de OOP. Si su estudio y situación lo permiten, le recomiendo que busque en su lugar un proyecto de Java.

+2

La gente sigue diciéndome esto, sin embargo, no proporcionan una razón. Entonces, ¿qué función OOP esencial PHP pierde? – Tomik

+1

flamebait? muchos ejemplos de patrones en PHP en la web (google para "patrones php"). Desde 5.3 el lenguaje es muy capaz. Creo que se trata más de la habilidad de los programadores en un proyecto que del lenguaje en sí mismo que influye en la excelencia en el diseño ... – Steve

+1

Un lenguaje OO "más puro" no impone un diseño excelente. Eso depende del diseñador. Y no sé cuándo fue la última vez que echas un vistazo a PHP, pero a partir de la versión 5, sus capacidades de objeto son bastante fuertes. –

1

le recomiendo que tome un vistazo a Symfony 2.

Es probablemente el mejor proyecto PHP diseñada encontrará. Es SOLID, DRY y usa patrones cuando corresponde.

+1

Symfony es genial, y echa un vistazo a su proyecto hermano Doctrine 2.0. –

1

¿Cuál es exactamente el problema al que se enfrenta con "Modelos"? Usted habla de Dependency Injection, pero eso realmente no tiene nada que ver con el concepto de un "Modelo" en el contexto de MVC. Si está buscando ejemplos de cómo administrar y pasar las dependencias por jerarquías de objetos, es posible que desee echarle un vistazo a Symfony 2.Implementación de contenedor de inyección de dependencia de 0.

+1

Conozco Symfony DI Container, es bastante bueno. Pero lo que quiero ver es una implementación DI en acción. Por ejemplo, incluso con el Contenedor DI completo, aún necesita resolver el problema de inyectar el contenedor. ¿Qué tiene que ver el modelo con DI? Necesita DI para la implementación de calidad de modelos de varias capas. – Tomik

Cuestiones relacionadas