2008-11-25 12 views
5

Para nuestro proyecto escolar, tenemos la tarea de definir un documento de diseño que describa la arquitectura de una aplicación PHP.Diseño orientado a objetos para la aplicación PHP

Somos libres para decidir qué incluir en el documento.

Nuestro profesor sugirió muchos diagramas (UML).

También nos pidió que consideremos diagramas de clase, pero con cuidado, ya que PHP no está completamente orientado a objetos.

Mi pregunta: ¿Es factible un diseño orientado a objetos orientado al dominio para una aplicación PHP? ¿Qué considerar al hacer OO en PHP? ¿Cuáles son los pros y los contras? ¿Algún recurso útil en OO en las mejores prácticas de PHP y PHP?

Respuesta

9

En mi humilde opinión, es bastante difícil describir la arquitectura de cualquier aplicación sin saber qué se supone que debe hacer la aplicación. Todas las aplicaciones (PHP u otras) de cualquier complejidad se ven diferentes.

En segundo lugar, PHP5 le da clases/objetos y la plétora habitual de OO gubbings - por lo que para describirlo como "no totalmente orientado a objetos" es engañoso, creo. Si quiere decir que puede tomar un enfoque de procedimiento sin estar restringido a los objetos, entonces sí, pero si usted quería que todo fuera un objeto, esa era su elección.

¿Es DDD factible para PHP? Sí, por supuesto. Un enfoque particular de la arquitectura no suele depender de la tecnología. Las mejores prácticas, los pros/contras del diseño OO se aplican a la mayoría de los lenguajes: PHP te deja bastante libre para decidir cómo estructurar tu código.

Se pueden encontrar este Best Practices charla del sitio PHP útil;)

2

PHP hoy en día se puede describir como totalmente orientado a objetos por elección. Ofrece todo lo que necesita, pero no está obligado a escribir código OO.

Hay dos libros que me ayudaron mucho en la comprensión de los principios OO en relación con PHP:

  • PHP en Acción (Manning)
  • Zend Guía de estudio para PHP5 (Zend)
2

La mayoría de los lenguajes OO actualmente en uso no son totalmente orientados a objetos. Todos los idiomas tienen idiosincrasias y errores. Entonces, yo diría que PHP es OO suficiente para la mayoría de los proyectos simples. Trabajé en Zend Framework, que está diseñado como una biblioteca de clases OO, con patrones de diseño y demás.

Una sugerencia para PHP es que debe prestar atención a su componente SPL, que le proporciona interfaces para muchas clases básicas.

Creo que es bastante débil si tu maestra dijera: "pon todo lo que quieras en el documento de diseño, los diagramas UML son bonitos". La documentación de diseño es una parte importante pero lamentablemente infravalorada de la ingeniería de software. Tu profesor debería mostrarte ejemplos o plantillas para un buen diseño doc.

0

OO es ante todo una metodología de diseño.

Como tal, es posible crear un diseño OO que se puede implementar en lenguajes de procedimiento. He visto esto hecho para los proyectos C y COBOL. Y me ha convencido de que casi todas las ventajas de OO tienen que ver con el diseño y NO con la implementación del lenguaje.

Así que sí, puede obtener un diseño OO con muchos UML (diagramas de clases, casos de uso, rutas de natación, etc.) y puede implementarlo en php (utilizando clases o no).

De todos modos php es efectivamente un superconjunto de OO así que si se restringe a las clases y las funciones dentro de las clases (== métodos) tiene una implementación de OO.

Lo único que falta son las definiciones de la interfaz, pero tiene muy poco sentido definir las interfaces en un lenguaje con dicha comprobación de tipo (no) limitada.

Cuestiones relacionadas