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/)

GatorV 08/12/2006 17:02

Re: Programacion a 3 capas PHP
 
Si quieres una critica, yo creo deberias de sentarte a delinear bien tu framework, para empezar trata de hacer todo, y cuando digo todo es TODO de forma orientado a objetos.

La idea de un framework es que puedas re-utilizar los componentes sin necesidad de que todo este en cierto lugar, o sea cada componente debe de poder iniciarse y ejecutarse en el momento adecuado y sin problema.

Solo te puedo decir igual que como dice Enrique, saca todos tus defines, global, etc. de tu framework, reemplazalos por storage engines, y class constants, y creeme que la comunidad te lo va a agradecer :arriba:

anthemfor182 08/12/2006 20:50

Re: Programacion a 3 capas PHP
 
Gracias GatorV, hoy he pensado mucho en eso y desde ya me puse a trabajar en esto, tienen razón, no lo habia hecho para mantener la compatibilidad con la gente que ya esta trabajando el framework pero igual tienes razón al final me lo agradeceran. :arriba:

enriqueplace 08/12/2006 20:50

Re: Programacion a 3 capas PHP
 
Cita:

Iniciado por GatorV (Mensaje 1814735)
Si quieres una critica, yo creo deberias de sentarte a delinear bien tu framework, para empezar trata de hacer todo, y cuando digo todo es TODO de forma orientado a objetos.

Comparto plenamente. Estaría en el segundo grupo de mi clasificación de programadores: los que programan estructurado con uso de objetos (sueltos). :policia:

Cita:

Iniciado por GatorV (Mensaje 1814735)
La idea de un framework es que puedas re-utilizar los componentes sin necesidad de que todo este en cierto lugar, o sea cada componente debe de poder iniciarse y ejecutarse en el momento adecuado y sin problema.

La simple definición de "un framework es un caja de herramientas", puedes usar cualquiera de ellas, o un conjunto de ellas, en diversos contextos. Si tu tienes todas las herramientas unidas, pegadas, y no puedes usar ninguna de forma "autónoma", la caja de herramientas no sirve, solo se puede aplicar a un número muy reducido de contextos.

Cita:

Iniciado por GatorV (Mensaje 1814735)
Solo te puedo decir igual que como dice Enrique, saca todos tus defines, global, etc. de tu framework, reemplazalos por storage engines, y class constants, y creeme que la comunidad te lo va a agradecer :arriba:

¡Epa, epa! ¿yo dije todo eso? ¡no pongas en mi boca cosas que no entiendo!
¿A donde vas con lo de "storage engines"? Sé más claro que podemos tener menores de edad fuera del horario de protección, y yo estoy demasiado viejo para entender muchas cosas a la vez :pensando:

enriqueplace 08/12/2006 21:03

Re: Programacion a 3 capas PHP
 
Regalar? nooo... yo solo sé rezongar y aumentar mi ego ;-)

Tengo la respuesta a tu mail guardada, principalmente, porque se me agotaron la variedad de palabras que usé para criticar el framework ;-)

Fuera de la broma, siempre creo que animarse a intentar y tirarse al agua, aunque te equivoques, ya es un gran logro. Gente que critica por criticar sobran. También es un segundo logro ser abierto a las críticas y ser a su vez autocrítico con el trabajo de uno. Es muy común ver como la gente se molesta recibir la crítica de los demás, y en el peor de los casos, cuando los demás tienen razón en lo que dicen.

Siempre repito que el principal problema de desarrollar sistemas es el "orden", nada más. Desarrollar en "3 capas" es un tema de orden, usar diagramas UML antes de implementar, es un tema de orden, implementar un patrón fachada, es un tema de orden, no detectar donde surge el error en el código, es un tema de orden, el concepto de "paquetes", es un tema de orden.

Los sistemas son "más grandes" que los scripts sueltos, si no somos ordenados, nunca podremos construir uno. Si no eres ordenado y metódico, imposible. Hay una gran diferencia entre ser "programador" y ser "desarrollador".

Todo es un tema de orden, más que de dominio del lenguaje.

anthemfor182 08/12/2006 21:12

Re: Programacion a 3 capas PHP
 
Ok, lo de las variables globales lo acepto y me declaro culpable...

Cita:

Iniciado por enriqueplace (Mensaje 1814858)
La simple definición de "un framework es un caja de herramientas", puedes usar cualquiera de ellas, o un conjunto de ellas, en diversos contextos. Si tu tienes todas las herramientas unidas, pegadas, y no puedes usar ninguna de forma "autónoma", la caja de herramientas no sirve, solo se puede aplicar a un número muy reducido de contextos.

Esta parte no se la entiendo a los 2 :'( , que pena, a que parte del framework se refieren cuando dicen que no se pueden usar sino todas unidas?

El framework propone en muchos sentidos una forma de trabajo y la idea es seguir esta forma de trabajo (por alla en ruby on rails lo llamaban convención sobre configuración) esto se hace para que este puedan automatizar mas cosas y nos preocupemos por otras más importantes. ¿Si no es esto, me pueden explicar?

Gracias

Pdt: creo que lo de storage Engines es Motores de base de datos, jeje

GatorV 09/12/2006 11:41

Re: Programacion a 3 capas PHP
 
Storage Engines es una forma de poder utilizar un registro para poder mantener variables en un solo lugar, con esto te quitas el uso de globales, y es mas limpio ya que sabes que estan en un solo lugar contenidas.

A lo que me refiero con usar por partes es poder abstraer todo, por decir si no quiero usar mvc, ni nada de eso, pero quiero usar el objeto form, lo puedo instanciar directamente:
Código PHP:

include('path/to/GeckoForm.php');

$form = new GeckoForm();
$forma $form->build(); 

y asi si no se usar mvc, ni clases ni nada de eso puedo saber que puedo trabajar con el formulario directamente sin que algun error se presente.

B** 10/12/2006 00:15

Re: Programacion a 3 capas PHP
 
Cita:

Iniciado por GatorV (Mensaje 1815221)
Storage Engines es una forma de poder utilizar un registro para poder mantener variables en un solo lugar, con esto te quitas el uso de globales, y es mas limpio ya que sabes que estan en un solo lugar contenidas.

Por favor podrias poner un ejemplo de eso?

GatorV 10/12/2006 11:14

Re: Programacion a 3 capas PHP
 
Algo simple:
Código PHP:

class Registro {
      private 
$registro;
      private static 
$_instance;
      
      private function 
__construct() {
            
$this->registro = array();
      }

      public static function 
getInstance() {
           if( !
self::$_instance instanceof Registro ) {
                 
self::$_instance = new Registro();
           }
           
           return 
self::$_instance;
      }

      public function 
store$name$obj ) {
            
$this->registro[$name] = $obj;
      }

      public function 
get$name ) {
            return 
$this->registro[$name];
      }


Y ya puedes tener esa clase para almacenar objetos en toda tu aplicacion ej:
Código PHP:

class clientes {
       public function 
getClientes() {
             
$db Registro::getInstance()->get'db' );
             
$db->Query$this->query );
             
$clientes $db->fetchRow();
             
Registro::getInstance()->store'clientes'$clientes );
       }
}

class 
Proveedores {
      public function 
almacen() {
            
$clientes Registro::getInstance()->get('clientes');
      }


y asi te quitas andar regresando variables, y pasandolas, ya que sabes que estan en el registro.

Ojo este es un ejemplo muy muy basico, es solo para que te des una idea.

zsamer 10/12/2006 18:54

Re: Programacion a 3 capas PHP
 
yo ocupo el patron registry, en el fondo es lo mismo que plantea GatorV Registry

B** 11/12/2006 08:41

Re: Programacion a 3 capas PHP
 
No pues gracias por el ejemplo Gatorv.. si lo entendi..
Esta linea:
Código PHP:

Registro::getInstance()->store'clientes'$clientes ); 

...... eso solo se puede hacer cuando la funcion getInstance(o cualquier otra funcion) es de tipo static?, es decir de acceder a un metodo y luego a otro a la vez...

GatorV 11/12/2006 09:51

Re: Programacion a 3 capas PHP
 
No necesariamente, cuando tu funcion regresa un objeto en PHP5 puedes acceder al metodo sin tener que pasarlo a una variable.

Algo asi:
Código PHP:

class prueba {
     function 
algo() {
           return 
$this;
     }

     function 
habla() {
           echo 
"hola";
     }
}

$prueba = new prueba();
$prueba->algo()->algo()->algo()->algo()->algo()->algo()->algo()->habla(); 

En PHP4 tenias que hacer algo asi:
Código PHP:

$prueba = new prueba();
$obj $prueba->algo();
$obj2 $obj->algo();
$obj3->habla(); 


sgonzalezg 20/01/2007 11:32

Re: Programacion a 3 capas PHP
 
Hola yo soy un estudiante de Informática y pienso que no estoy a la altura de ustedes que llevan años programando. Bueno el problema es que yo nunca había utilizado este tipo de programación en 3 capas pero me hace falta aprender para el trabajo de diplomado que es en junio.

La verdad es que no se como dividir las cosas pues me confundo un poco con Web modular (esta si se como funciona). El trabajo consiste en un sistema de gestión para reservación de maquinas en un horario determinado en los laboratorios de la escuela y no se como empezar a dividir las cosas.

Le pido de favor que me respondan y me orienten. Gracias.

enriqueplace 26/01/2007 13:03

Re: Programacion a 3 capas PHP (iniciar)
 
¿Y tú que has leido sobre el tema? ¿Nada de lo que has leido, principalmente conceptos, te ha quedado claro?

Por lo menos en Google debes haber encontrado algo.

Si tu no te ayudas, dificilmente lo haga otro por ti... más cuando es un trabajo de estudios y es tu entera responsabilidad aprender... es parte de nuestra propia carrera.

andresf87 01/02/2007 03:15

Re: Programacion a 3 capas PHP
 
buenas, hace tiempo que vengo leyendo sobre programacion multi-thier y la verdad que se pueden hacer cosas muy buenas, haciendo que la aplicacion sea facil de administrar, depurar etc, ademas de la escalabilidad... Les dejo un app en php para manejar templates, {Smarty | smarty.php.net/ } muy buena y muy flexible... Saludos..

Casuis 01/02/2007 09:15

Re: Programacion a 3 capas PHP
 
Bueno a decir verdad Smarty ha quedado en desuso dentro del desarrollo empresarial en substitución de el propio parser de php más efectivo y rápido, ayudado con helpers (funciones generadoras de código (x)html, javascript).

enriqueplace 01/02/2007 09:22

Re: Programacion a 3 capas PHP
 
Dicen que las generalizaciones son muy injustas... discrepo que lo de "ha quedado en desuso", pero bueno, tal vez puedas comentar un poco más de tu experiencia personal en empresas.

¿Cuando hablas del "propio parser de php", a que te refieres?

PD: no te olvides que no todos son "expertos" y muchos de estos comentarios solo confunden. No todo el mundo quiere lanzar un cohete a la Luna.

GatorV 01/02/2007 09:38

Re: Programacion a 3 capas PHP
 
Yo creo Casius se refiere a usar PHP directo dentro de los templates, pero separando el codigo principal de lo que es la vista (patrón MVC), algo asi:

Código PHP:

<html>
<head></head>
<body>
<?php echo link_tag"Prueba""paginauno.html" ); ?>
<?php 
echo $mensaje?>
<?php 
foreach( $carrito as $data ) { ?>
Cantidad: <?php echo $data['cantidad']; ?><br />
Producto: <?php echo $data['producto']; ?><br />
Costo: <?php echo $data['costo_total']; ?><br />
<?php ?>
</body>
</html>

Todo esto atado a un controlador de fondo donde se levantan las variables de $mensaje, $carrito, etc.

migueilichenco 06/02/2007 20:40

Re: Programacion a 3 capas PHP
 
Hola a todos, como siempre viendo los capos que son ustedes, yo siempre e trabajado en php estrucuturada, pero estoy tratando de migrar a php oo, no me es muy sencillo aun por que no conosco a fondo ningun otro lenguaje orientado a objeros, y bueno me gustaria que me recomienden un Framework, para poder estudiar los usos de php oo y funciones, e aprendido mucho gracias a ustedes, aunque creo que mi php oo aun parece una sopa me falta aprender aun a dividir en capas, aun me falta entender conceptos en la sintaxis si me va mejor, bueno espero su ayuda y gracias por ayudar con sus comentarios a la comunidad de programadores, php es un lenguaje profesional y es bueno sacarle todo el jugo, y si le sumas js aumenta sus posibilidades, bueno no hablo mas :-) cuidense

un saludo

enriqueplace 07/02/2007 09:11

Re: Programacion a 3 capas PHP
 
Si buscas en el foro verás muchas discusiones sobre el tema. A esta altura, muchas sugerencias son opiniones personales, más cerca a "razones de piel" ;-)

Mi estrategia personal, dada la variedad de productos, es apegarme al que sería "como la versión oficial" del framework para PHP, el Zend Framework. Zend es la empresa que desarrolla PHP y toda la "arquitectura" de alrededor.

Aunque pueden haber diferencias técnicas a favor y en contra para cada framework, también hay que ver como ha sido diseñado y qué es lo más conveniente en el futuro, según vaya evolucionando.

Lo digo porque tal vez Zend Framework tiene menos funcionalidades que muchos otros, pero a futuro puede que sea una parte necesaria de la futura "plataforma php" (como si de J2EE de Java estuviéramos hablando).

migueilichenco 07/02/2007 18:40

Re: Programacion a 3 capas PHP
 
gracias por tu ayuda, php es un poderoso lenguaje, quiero estudiar mucho, para poder desde aqui tambien apoyar a que se reconosca a php como un lenguaje profesional

Depende de nosotros valorar nuestro trabajo como dijo Enriqueplace, yo promuevo en php5 , si lo tengo instalado en mi servidor, y al trabajar con js no ahy igual, bueno gracias por su ayuda Enriqueplace, GatorV, y todos los que siempre ponen sus comentarios y ayudas a los que aun estamos aprendiendo

saludos cordiales

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


La zona horaria es GMT -6. Ahora son las 08:24.

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