Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Separar Interfaz de la Logica (http://www.forosdelweb.com/f68/separar-interfaz-logica-310475/)

dominguez 23/06/2005 11:19

Separar Interfaz de la Logica
 
Hola, por un lado tengo una interfaz y por el otro la lógica de la aplicación y ambas las quiere tener separadas. Entonces he pensado en un objeto "Controlador" que reciba los eventos de esa interfaz, pero no sé como meter los datos del formulario en un método y llamar al "Controlador".

Este "Controlador" sería un Singleton??

Gracias.

lbnumxyz 23/06/2005 12:25

lbnumxyz
 
Dominguez deberias pensar en trabajar con js para manejar eventos para luego transferirlos hacia tu objeto controlador php. Es una idea.

dominguez 23/06/2005 12:54

Bueno, realmente ese objeto sólo va a tratar con eventos del sistema como pueden ser altas,bajas, modificaciones, etc...

Si el fichero con el que trabajo se llama ficheroAlta.php, he pensado en poner en el mismo fichero, la creación del Controlador y llamada al método con los parámetros, algo asi:

ficheroAlta.php
----------------

$controlador = new Controlador();

$controlador->RealizarAlta($_POST['NOMBRE'],$_POST['APELLIDO'],...);

...
formulario que recoge los datos
...


Sería una buena idea? Alguien le ve alguna pega?

Gracias.

gnfrs 23/06/2005 17:26

Hola.

Sería una buena idea? Alguien le ve alguna pega?

SIIIIIIIIIIIIIIi !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

En un sistema en 3 capas se separa el código de la siguiente forma:

1) Administración de bases de datos.
2) Reglas de negocios.
3) Interfasce usuario.

Lo que estás queriendo hacer es la capa de reglas de negocio, yo estoy armando algo como eso pero es muy complicado (ya tengo separadas las capas 1 y 3).

En pocas palabras:
  • A mí no me importa si quiero conectarme a MySql, Oracle, ODBC o MsSql porque de eso se encarga la capa 1.
  • No me interesa la grafica ya que eso es trabajo de la capa 3
Yo hago un $base->Query("SELECT * FROM ..."); sin importar qué motor utilizo, yo hago $botonEnviar->Draw(); sin decirle los "colores" o el formato, ahora, cómo hacer un $usuario->Agregar(...); ???????????????

No sé si me fui de tema, la idea de trabajar de esta forma es muy cómoda y vale la pena.

Saludos.-

Gabriel Luraschi
Estudio Quadra
www.estudioquadra.com.ar

HerSAn 24/06/2005 07:39

Lo que necesitas para el ultimo, es lo que se comoce como mapper. En este mismo foro se trato el tema de los mapper`s. Inclusive webstudio dejo una liga de uno de los capitulos de un libro de matin fowler que habla sobre este tema. Tambien si no quieres batallar; ya que el tiempo no siemrpe esta a nuestro favor viene comentada dos opciones una que esta en las pear que es el DataOBject y otra implementacion que es para php5 que se llama propel si no mal recuerdo, en mi caso he usado el de las pear con bastante exito y es el que directamente te puedo recomendar el otro, no he tenido tiempo de usarlo por que no estoy usando actualmente php5 en mis desarrollos.

SAludos..

dominguez 24/06/2005 10:46

Bastaría con el patrón modelo-vista-controlador para separar la interfaz de la lógica de negocio??

El sentido de "arriba-abajo", es decir, desde la vista(interfaz), pasando por el controlador hasta llegar a la lógica(modelo) lo puedo ver mas o menos claro en PHP. Pero el sentido de "abajo-arriba" cómo sería??

X ejemplo si quiero presentar un conjunto de artículos en un formulario. Xq habría que "invocar" una interfaz de alguna manera.

Gracias por la ayuda.

adriancid 19/07/2005 09:22

Aqui tienes una bueno solucion a tu problema

http://www.tonymarston.net/php-mysql...structure.html

clasen 14/10/2005 01:04

Cita:

Iniciado por HerSAn
Lo que necesitas para el ultimo, es lo que se comoce como mapper. En este mismo foro se trato el tema de los mapper`s. Inclusive webstudio dejo una liga de uno de los capitulos de un libro de matin fowler que habla sobre este tema. Tambien si no quieres batallar; ya que el tiempo no siemrpe esta a nuestro favor viene comentada dos opciones una que esta en las pear que es el DataOBject y otra implementacion que es para php5 que se llama propel si no mal recuerdo, en mi caso he usado el de las pear con bastante exito y es el que directamente te puedo recomendar el otro, no he tenido tiempo de usarlo por que no estoy usando actualmente php5 en mis desarrollos.

SAludos..

Hola, soy Martín, Desarrollador PHP.
Mi MSN [email protected]
Te quisiera hacer algúnas consultas acerca de mapping a bd en PHP.

GRacias!

jpinedo 14/10/2005 02:02

Hola clasen:

¿Y por qué no posteas esas dudas aquí en el foro?
Seguramente esas consultas pueden despertar sana curiosidad en los que no saben la respuesta (creo, a priori, que me puedo incluir en este grupo).

Y si llegan a haber respuestas interesantes, sería enriquecedor para todos los usuarios que pasen por aquí.

Saludos:adios:

Casuis 18/10/2005 08:18

En fin después de mucho leer en el post veo que la gente anda un poco perdida en el tema, aunque el que más se acerca sea Dominguez.
El patrón Modelo-vista-controlador es precisamente un conjunto de patrones que operan entre si para separar las capas. Interface, negocio y modelo.

La forma más sencilla para separar las 3 logicas es usando paquetes o librerias desarrolladas para php.

MODELO
Para la capa de modelo podemos utilizar a mi entender dos paquetes muy buenos:
1) ADODB
2) PEAR:DB

Con esto conseguimos la abstracion de la base de datos. No se PEAR pero ADODB consigue conexión LDAP.

VISTA
Para la interface podemos utilizar un motor de templates que hay a patadas o utilizar nuestro modelado de XSL o lo que te venga en gana. Yo en este caso recomiendo SMARTY.

CONTROLADOR

Bueno el controlador lo tenemos que programar nosotros mismo pero el más simple no requiere más de 60 línias en php5 utilizando SMARTY y ADODB.
En fin Dominguez si te interesa más el tema puedes contactar. Aunque yo solo programo en PHP5

HerSAn 03/11/2005 15:53

Cita:

Iniciado por Casuis
En fin después de mucho leer en el post veo que la gente anda un poco perdida en el tema, aunque el que más se acerca sea Dominguez.
El patrón Modelo-vista-controlador es precisamente un conjunto de patrones que operan entre si para separar las capas. Interface, negocio y modelo.

La forma más sencilla para separar las 3 logicas es usando paquetes o librerias desarrolladas para php.

MODELO
Para la capa de modelo podemos utilizar a mi entender dos paquetes muy buenos:
1) ADODB
2) PEAR:DB

Con esto conseguimos la abstracion de la base de datos. No se PEAR pero ADODB consigue conexión LDAP.

VISTA
Para la interface podemos utilizar un motor de templates que hay a patadas o utilizar nuestro modelado de XSL o lo que te venga en gana. Yo en este caso recomiendo SMARTY.

CONTROLADOR

Bueno el controlador lo tenemos que programar nosotros mismo pero el más simple no requiere más de 60 línias en php5 utilizando SMARTY y ADODB.
En fin Dominguez si te interesa más el tema puedes contactar. Aunque yo solo programo en PHP5

O puedes colocar tu codigo en las FAQs para que mas de un miembro del foro pueda hacer uso de el, o estudiarlo para hacer su propia implmentacion.
El detalle del patron MVC es que te dice que mediante un controlador reduces el acoplamiento entre la vista y el modelo, pero no te dice como implementarlo realmente. Asi que las respuestas estaban orientadas a ayudar en ese punto. El tema sobre MVC ya se ha tratado en mas de una ocasion y sobre el mismo punto, tu estas recomendando que usar pero no dices como implementarlo, es algo diferente. ya que desacoplar la vista del modelo puede hacerse con los patrone command, observer, mediator, por decir alguno.

Webstudio 11/11/2005 13:32

Bueno, después de mucho tiempo sin pasarme por este lado (no solo del foro, sino del PHP en sí), y inspirándome en una respuesta larga que estaba pensando para este post, he preferido publicar mi opinión en ZonaPHP, para que todos la puedan leer allí. Básicamente, no nos liemos antes de tiempo.
Espero les sirva

http://www.zonaphp.com/articulo48.php


La zona horaria es GMT -6. Ahora son las 07:21.

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