Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Programacion a 3 capas PHP (http://www.forosdelweb.com/f68/programacion-3-capas-php-441141/)

Felippe 09/02/2007 15:31

Re: Programacion a 3 capas PHP
 
Hola a todos:

Como un pequeño aporte a este tema interesante, les paso este enlace con el cual me topé al investigar un poco sobre MVC con PHP 5:

http://www.phpit.net/article/simple-mvc-php5/.

Tal como se indica en su resúmen, este tutorial es solamente de una simple aplicación MVC con PHP 5 (yo le llamaría 'Hello-World de MVC' ). Aunque este artículo lleva ya un buen tiempito de haberse publicado, espero que le sea de utilidad a alguien, para tener una idea de cómo emplear el Patrón MVC.

Salu2

migueilichenco 09/02/2007 16:50

Re: Programacion a 3 capas PHP
 
Me parece un articulo interesante, para comenzar, aunque seria bueno que alguno de aqui que domine el ingles y la programacion, realizara una traduccion del mismo para los que aun estamos entrando en esto

:si:

saludos

netoec84 18/02/2007 12:47

Re: Programacion a 3 capas PHP
 
Cita:

Iniciado por migueilichenco (Mensaje 1887824)
Me parece un articulo interesante, para comenzar, aunque seria bueno que alguno de aqui que domine el ingles y la programacion, realizara una traduccion del mismo para los que aun estamos entrando en esto

:si:

saludos

Bueno no hablo ingles a la perfeccion pero algo entiendo, y no soy experto en el tema... pero me servira para aprender mas sobre el mismo que me parece interesante, por ahora he traducido la primera parte ya cuando cuente con mas tiempo pondre las otras...

Construcción de un sistema MVC simple con PHP5

Webstudio 20/02/2007 15:19

Re: Programacion a 3 capas PHP
 
Bueno, pasé un momento por aquí ya que vi que esta discusión estaba interesante y que me puede ayudar con un proyecto que tengo pensado hacer.

Me gustó mucho encontrarme con el sitio PatternsForPHP que voy a estar revisando bastante estos días, aparte de que veré si tengo algo de tiempo para traducir o intentar hacer un tutorial parecido al que explican en MVC para PHP5, en zonaPHP.

Les dejo un saludo.

enriqueplace 20/02/2007 21:30

Re: Programacion a 3 capas PHP
 
El de MVC sobre PHP5 nos lo debes desde hace mucho tiempo ;-)

moron 15/05/2007 22:54

Re: Programacion a 3 capas PHP
 
a ver si esta bien esto:

usuarios:
form.php
tiene un input text con name="nombre"

negocios:

$query="select * from tabla where nombre like '".$_post[nombre]."'";
$datos=new ClsDatos;
$datos->conectarALaBD();
$datos->consultar($query)

en datos conecta a la base de datos y devuelve los resultados en un array asociativo por ejemplo.
ahora por regla debería pasar nuevamente por negocios y despues pasarselo a cliente para que muestre los resultados?, como sería?

enriqueplace 16/05/2007 07:59

Re: Programacion a 3 capas PHP
 
capa presentación -> dominio / negocios -> persistencia

El form en la capa de presentación, en dominio / negocios una clase Usuario que le puedas pedir uno o más usuarios y en persistencia una clase BaseDeDatos, o una una clase que se encargue de conseguir los usuarios, u otra clase Usuario que pueda resolver el mismo pedido pero que sí tenga ahí las llamadas concretas a la base de datos.

Cada capa una responsabilidad clara. Una presenta datos, la otra tiene la lógica del negocio (como se manejan los usuarios, como interactúan con otros objetos, etc) y la persistencia permite guardar o recuperar los objetos en un modelo relacional como es un motor de base de datos.

Que nadie haga el trabajo de otra capa. A veces parecerá redundante o que se agregan pasos que podrían ser más directos, pero cuando tienes un sistema que empieza a crecer se ve más claro y se entiende que es la única forma de trabajar.

moron 16/05/2007 09:27

Re: Programacion a 3 capas PHP
 
Gracias por la respuesta.
me cuesta un poco entender el paso de negocios a presentacion, supongamos que tengo la clase usuarios en negocios que recibe un array de resultados de una bd que contiene la lista de usuarios, entiendo que dicha clase debería tener un metodo getListaDeUsuarios(), como paso esos valores a presentacion (que entiendo que es un "formulario" de resultados)
saludos

Millertaker 09/05/2008 14:47

Re: Programacion a 3 capas PHP
 
Exelente tema de discucion

Millertaker 12/05/2008 14:58

Re: Programacion a 3 capas PHP
 
Yo recomendaria que miraran este tutorial de symfony Framework donde se hace un pequeño abrevocas a la programacion en tres capas con PHP


http://www.librosweb.es/symfony/capi...atron_mvc.html

Saludos

Soymejorquetu 13/03/2009 13:38

Respuesta: Programacion a 3 capas PHP
 
Queridos amigos, yo no se porque se matan la cabeza pensando en esto. Por distintas razones que se y que han expuesto algunos foristas muy sabiante, es imposible "por ahora" gerar una aplicacion en 3 capas con php. Problamente en php 7 (dentro de unos 2 años) se dignen a incorporar los elementos de orientacion a objetos que aun faltan para este objetivo.

Por tanto es inutil actualmente discutir este punto. Tengo 5 años programando en php y creame solo llegaran a 2 capas (cliente-servidor) caballeros.

Lo demas es arar en el mar................ Paciencia........... Y .net

enriqueplace 13/03/2009 13:44

Respuesta: Programacion a 3 capas PHP
 
Cita:

Iniciado por Soymejorquetu (Mensaje 2822219)
Queridos amigos, yo no se porque se matan la cabeza pensando en esto. Por distintas razones que se y que han expuesto algunos foristas muy sabiante, es imposible "por ahora" gerar una aplicacion en 3 capas con php. Problamente en php 7 (dentro de unos 2 años) se dignen a incorporar los elementos de orientacion a objetos que aun faltan para este objetivo.

Por tanto es inutil actualmente discutir este punto. Tengo 5 años programando en php y creame solo llegaran a 2 capas (cliente-servidor) caballeros.

Lo demas es arar en el mar................ Paciencia........... Y .net

Mmmm... creo que estás un poco confundido, "arquitectura de 3 capas" es simplemente conceptual y bien lo puedes hacer (digo, así hago los sistemas hace años), ideal sería tener algo como los namespaces, pero poder se puede.

Andrescu 19/04/2009 17:06

Respuesta: Programacion a 3 capas PHP
 
Porsupuesto que esto es posible. Quizas llego un poco fuera de tiempo, pero queria felicitarlos por una excelente discusion y a la vez consultarles como van con los respectivos desarrollos de frameworks, y quizas si existen nuevos descubrimientos.

Estoy a punto de comenzar un proyecto relativamente grande y me gustaria saber un poco mas sobre el tema de utilizar 3 capas en php, conosco esta metodologia y se que convinada con php se pueden lograr grandes cosas.

Ahora, a todo esto hago una sugerencia que quizas puede servirles. Como todos conocemos, las 3 capas son:

- Capa de Datos
- Capa de Negocios (Logica)
- Capa de Presentacion

A las cuales, si no me equivoco, aqui se les conoce por otros nombres.En fin, la sugerencia seria agregar una "capa" mas, y digo "capa" porque quizas no la consideren como una, si no parte de la Capa de Datos.

A esta "capa" yo la denomino "Capa de Entidades", en la cual se podrian crear objetos en base a los campos de la base de datos, para luego poder encapsularlos y manejarlos de una forma mas efectiva (como se trabaja en Java, si no me equivoco). No se si esto sea factible, quizas si, y por eso venia ante ustedes a consultarles.

Saludos

Andres Chavez

enriqueplace 19/04/2009 17:32

Respuesta: Programacion a 3 capas PHP
 
Que tal Andrés,

Cita:

Estoy a punto de comenzar un proyecto relativamente grande y me gustaria saber un poco mas sobre el tema de utilizar 3 capas en php, conosco esta metodologia y se que convinada con php se pueden lograr grandes cosas.
Creo que he puesto ejemplos en este foro sobre una forma de hacerlo, pero te lo comento nuevamente:
  1. Crear 3 carpetas con cada capa: presentación, dominio y persistencia (podrías llegar a tener una cuarta que sea "servicios" y se pueda usar desde cualquier capa).
  2. Si no tienes un sistema modular una sola entrada al sistema a través de index.php, deberás crear un archivo de configuración en la raiz de tu proyecto, que deberá ser incluído por todas las clases. Para engañar a las clases y estas simple puedan incluirlo sin importar de donde las llames, crea en cada capa un archivo de configuración que lo único que haga es incluir un ../configuracion.php (así siempre irán al único archivo sin muchas complicaciones).
  3. Crea fachadas (patrón facade) en cada capa / paquete, y ninguna clase debe acceder a una clase de un paquete sin pasar por la fachada.
Esto es a grandes rasgos lo estándar de "3 capas" y bajo PHP.

Comentario para el foro: dado que los moderadores de este foro me han "censurado" al bajar mi grado de "colaborador del foro" a "usuario común", voy a dejar de participar de forosdelweb.com, estoy respondiendo los temas en los cuales estoy aún suscripto por respeto a los usuarios a los cuales sí "colaboré" con mis aportes (tema el cual discrepan varios moderadores, que nunca sabré sus nombres, pero que cuentan con el apoyo del propio cvander).

A su vez, dada la "extrema moderación del foro", no sé cuanto tiempo pasará antes que borren cada uno de mis aportes.

Saludos!

pabx 19/04/2009 18:34

Respuesta: Programacion a 3 capas PHP
 
Cita:

Iniciado por Andrescu (Mensaje 2874871)
- Capa de Datos
- Capa de Negocios (Logica)
- Capa de Presentacion

Yo también manejo la misma nomenclatura para las capas.

La idea es que:

Presentacion: genere las páginas HTML a partir de un conjunto de información que le provee la capa de Negocios y lógica de presentación.

Negocios o Lógica: procese la información que el usuario le envía desde la presentación y se encargue de saber que vista o página le debe mostrar al usuario.

Datos: accede a la base de datos, para hacer consultas o modificar los datos ahí persistidos, es ejecutada por la capa de Negocios.

Más o menos así es el MVC.


Cita:

Iniciado por Andrescu (Mensaje 2874871)
A esta "capa" yo la denomino "Capa de Entidades", en la cual se podrian crear objetos en base a los campos de la base de datos, para luego poder encapsularlos y manejarlos de una forma mas efectiva (como se trabaja en Java, si no me equivoco). No se si esto sea factible, quizas si, y por eso venia ante ustedes a consultarles.

Aquí de lo que hablas, si entiendo bien, es de entidades (yo diría directamente clases) que se puedan manipular en un entorno orientado a objetos y que te permitan acceder y modificar la base de datos, esto se llama ORM. Busca información sobre esto, está la librería Doctrine que hace esto, también en mi framework (Yupp Framework) lo he implementado, este componente lo llamo Yupp ORM o YORM.


Saludos,
Pablo.

Andrescu 19/04/2009 21:09

Respuesta: Programacion a 3 capas PHP
 
Cita:

Iniciado por enriqueplace (Mensaje 2874885)
Si no tienes un sistema modular una sola entrada al sistema a través de index.php, deberás crear un archivo de configuración en la raiz de tu proyecto, que deberá ser incluído por todas las clases. Para engañar a las clases y estas simple puedan incluirlo sin importar de donde las llames, crea en cada capa un archivo de configuración que lo único que haga es incluir un ../configuracion.php (así siempre irán al único archivo sin muchas complicaciones).

Dime algo, en este archivo de configuracion, como seria recomendable tratar las variables, como constantes?, o quizas de algun otro modo?, ya que quiero crear un modulo en el cual estas variables se puedan cambiar, para que el sistema sea mas dinamico.

Cita:

Iniciado por enriqueplace (Mensaje 2874885)

Comentario para el foro: dado que los moderadores de este foro me han "censurado" al bajar mi grado de "colaborador del foro" a "usuario común", voy a dejar de participar de forosdelweb.com, estoy respondiendo los temas en los cuales estoy aún suscripto por respeto a los usuarios a los cuales sí "colaboré" con mis aportes (tema el cual discrepan varios moderadores, que nunca sabré sus nombres, pero que cuentan con el apoyo del propio cvander).

A su vez, dada la "extrema moderación del foro", no sé cuanto tiempo pasará antes que borren cada uno de mis aportes.

Saludos!

Sinceramente, no puedo comentar mucho acerca de esto, pero al menos en este tema, me he dado cuenta que eres un gran colaborador, has despejado muchas de mis dudas y creo que a la vez las de muchas personas. No se lo que habra pasado antes de mi entrada en esta comunidad, pero te pido porfavor sigas aqui con nosotros, gracias por todo :aplauso:.

Cita:

Iniciado por pabx
Aquí de lo que hablas, si entiendo bien, es de entidades (yo diría directamente clases) que se puedan manipular en un entorno orientado a objetos y que te permitan acceder y modificar la base de datos, esto se llama ORM. Busca información sobre esto, está la librería Doctrine que hace esto, también en mi framework (Yupp Framework) lo he implementado, este componente lo llamo Yupp ORM o YORM.

Claro, eso mismo ORM. Voy a investigar tu framework, claro, si tu me lo permites :-D, y quizas asi pueda implementar algo mejor.

Gracias a todos.

Andres Chavez

GatorV 19/04/2009 21:15

Respuesta: Programacion a 3 capas PHP
 
Yo creo que hay que pensar en una separación mas a nivel como comentaba enriqueplace, la capa de persistencia (o datos), debe de ser una capa de abstracción entre tu fuente de persistencia (ya sea una base de datos aunque no es siempre así) y tu controlador.

Lo que buscas mas a nivel de lógica es el paradigma de Active Table que te permite mapear un objeto a una tabla en la base de datos, pero como te comento esto debe de estar en una capa más abajo de tu capa de persistencia, la capa de persistencia es la encargada de comunicarse con esta capa para guardar / leer / actualizar los datos en la BDD.

Otra cosa que luego pasamos mucho de largo es que las plantillas (ya sea Smarty, PHP Template, etc.) NO es la capa de vista, ya que en un MVC la capa de vista es la encarga de comunicarse con el modelo (capa de persistencia).

Te recomendaría que vieras un poco la forma de implementación de Zend Framework tiene muy bien solucionado el implementar MVC en PHP separando perfectamente el Controlador (FrontController) de la capa de Datos, y la capa de Vista (Zend Controller Action + Zend View). Muchas veces nos confundimos en que la capa de vista (el template) es el encargado de obtener los datos y empezamos a complicar las cosas.

La capa de la vista (la acción) obtiene los datos y los procesa e imprime, en esta capa lo más recomendable es separar en dos la parte de PHP y la parte de presentación usando un motor de plantillas.

Espero con esto darte una idea un poco más concreta para que puedas hacer tu proyecto.

Saludos.

pabx 20/04/2009 06:01

Respuesta: Programacion a 3 capas PHP
 
Cita:

Iniciado por Andrescu (Mensaje 2875030)
Claro, eso mismo ORM. Voy a investigar tu framework, claro, si tu me lo permites :-D, y quizas asi pueda implementar algo mejor.

Como no, bajatelo, pruebalo, cambialo, mejoralo y hazmelo saber!

Lastima que no te pueda poner links para orientarte porque no me lo permiten las restricciones sobre spam, pero si buscas en google Yupp Framework llegarás a las páginas rápidamente. Lo que no te mencioné es que Yupp también implementa una variante de MVC, no es solo ORM si no ambas cosas.

Saludos y cualquier ayuda que necesites no dudes en consultar.

Pablo.

biblio 22/04/2009 12:40

Respuesta: Programacion a 3 capas PHP
 
Han tocado un poco de todo a lo largo de las respuestas, y están muy interesantes.

Además de conectarme despues de mucho tiempo, felicitaciones a esta comunidad que sigue para adelante.

Con respecto a las capas como ya bien lo dijeron es mas conceptual que una arquitectura o patrón de trabajo definido. El concepto de capas es escalable, como bien se podría tener 3 y las que quieras según las necesidades que se presenten, se debe entender que cada capa debe estar bajo un marco de concepto claro sobre la tarea que debe realizar.

Saludos a todos.

pabx 22/04/2009 12:46

Respuesta: Programacion a 3 capas PHP
 
Cita:

Iniciado por biblio (Mensaje 2879858)
Han tocado un poco de todo a lo largo de las respuestas, y están muy interesantes.

Además de conectarme despues de mucho tiempo, felicitaciones a esta comunidad que sigue para adelante.

Con respecto a las capas como ya bien lo dijeron es mas conceptual que una arquitectura o patrón de trabajo definido. El concepto de capas es escalable, como bien se podría tener 3 y las que quieras según las necesidades que se presenten, se debe entender que cada capa debe estar bajo un marco de concepto claro sobre la tarea que debe realizar.

Saludos a todos.

Plenamente de acuerdo, aquí se habla mucho de MVC, pero dependiendo del enfoque, un sistema podría tener más o menos de tres capas, la cantidad es lo de menos, lo principal es para que las queremos. El objetivo de las capas es que haya "algo" que se encargue de un aspecto y solo uno del sistema que estamos produciendo, y que otras partes del sistema no se preocupen por resolver lo que no le concierne a la capa a la cual pertenece. Como bien mencionas, depende de la arquitectura (bloques que constituyen el sistema y sus relaciones), no todo es 3 capas. Por ejemplo podría tener un sistema que a partir de una base de datos genere formularios que son llenados y guardados directamente, o sea tendría 2 capas, persistencia y presentación, nada de lógica.

Saludos,
Pablo.


La zona horaria es GMT -6. Ahora son las 09:37.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.