jueves, 31 de octubre de 2013

Hola, hoy presentaré una introducción a PHP Component Model, donde explayaré varias cosas, entre otras:

- ¿Cuál es la idea?
- ¿Cómo se implementa?
- Consideraciones Generales.

pero primero mi explicación de siempre:


ADVERTENCIAprobablemente mucha gente esté en desacuerdo con lo que expreso en las entradas de mi blog, la idea del blog siempre fue, como todo blog, la de presentar textos que muestren un poco de mi "día a día", en mi caso en el mundo de la programación y la informática.
No obstante, todos mis textos están basados en la normativa vigente, y en toda mi experiencia hasta el momento, aquellos que estén en desacuerdo, probablemente sea por ignorancia o desconocimiento, y también podríamos mencionar engreimiento, creer que saben todo, pero tampoco podemos dejar de lado que quizá esté equivocado en algunas cosas, pero con el tiempo me daré cuenta y lo aclararé en nuevas entradas al blog.


Introducción inicial
PHP Component model, es un modelo basado en la simple idea de mejorar la calidad, estructura y funcionalidad de códigos en php, además de poder aplicar reuso y extensibilidad a los códigos en php, es necesaria la aclaracion de que no es posible llegar realmente a reusar y extender componentes completamente por las limitaciones del lenguaje.

PCM Experimental
Si bien mi idea maduró bastante en estos días, aún me falta pulirla, por lo que por el momento PCM es experimental, por lo que no se aconceja utilizar PCMBasic ni dar por hecho que PHP Component Model es correcto en todos sus sentidos, probablemente con el paso del tiempo, la teoría cambie.
Por ejemplo actualmente tengo mis dudas sobre CLSystem y Component Library del proyecto, ambos terminos deben ser pulidos, la idea aún no termina de convencerme.

PCM y PCMBasic
Es importante decir, que PCM es un modelo de componentes para php, una teoría de la forma correcta de trabajar con componentes en php, o mejor dicho es la forma más eficiente y parecida a un manejo de componentes.
Por obviedad se puede asumir que el lector entiende que:
Los componentes deben ejecutar por si mismos, no deben tener absolutamente ningún tipo de dependencia más que las del lenguaje, por lo que por ejemplo no deben tener conecciones a bases de datos.
Tanbién que los componentes son objetos, y deben ser usados como tales, no se deben crear componentes pensando en plurales, o en varias cosas, los objetos son una cosa sola y deben ser creados como tal.
Por ejemplo, cuando empezé con POO (programación orientada a objetos) usaba las clases para crear objetos como "usuarios" donde creaba funciones como "obtener_usuarios" y ejecutaba una consulta SQL para obtener todos los usuarios, obviamente con el tiempo caí en la cuenta de que la idea de manejarlo así era incorrecta, que los objetos eran una cosa, y a lo sumo podían representar a un usuario.
También asumo que el lector conoce MVC y sabe que:
Los modelos son la abstraccion de la base de datos, por lo tanto los componentes y todo lo que corresponda a dicha rama debe al final representar la base de datos.
Las vistas son la representación gráfica del sistema, o lo que común mente se conoce como Diseño Web.
Los controladores son el nexo entre los modelos y las vistas, por lo que NO deben tener consultas SQL o algo que tenga que ver con bases de datos, ni nada por el estilo.
Esta aclaración la escribo porque en PCMBasic (el código básico, que demuestra mi teoría del PCM), implemento ciertas medidas y reglas para que nadie cometa errores, por ejemplo defino cada controlador como una clase, Clase porque es la representación de un objeto, un objeto grande, y como tal, deben pensar en la página web como un conjunto de objetos, donde cada objeto grande representa un controlador, y cada objeto pequeño o función dentro de ese objeto grande (por ejemplo una publicación dentro de la lista de publicaciones) es un componente.
Además implemento el patrón Singleton, para evitar que se creen multiples instancias de un controlador, por ejemplo, si tenemos un controlador que se llame sección (para un foro) que tenga una parte para ver los topics, otra parte para ver los subsecciones, etc. no deberíamos tener necesidad de crear otra instancia para crear otra página de sección, ya que se usa el mismo objeto, diferente sería si nos referimos a los post, donde cada post es una instancia de una clase post.
Suponiendo que esto era obviedad y que no hacía falta la aclaración seguiré. PCMBasic es una pequeña base de código, más demostrativo que otra cosa, en las entradas de mi blog explicaré detalles sobre PCM que permitan crear su porpia báse de código mejorada para implementar PCM.

Para finalizar la explicación les dejaré una frase que tienen que tener en cuenta a la hora de realizar componentes:
"La abstracción es la separación de la especificación y la implementación."

Saludos!

0 comentarios:

Publicar un comentario

Subscribete al RSS Follow me on Twitter!