Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Capas de diseño y de negocio con PHP

Estas en el tema de Capas de diseño y de negocio con PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, Desde hace unos días me corroe la idea de si existe la posibilidad de separar la capa de diseño de la capa ...
  #1 (permalink)  
Antiguo 07/03/2009, 17:40
Avatar de salvaBCN  
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Capas de diseño y de negocio con PHP

Hola a todos,
Desde hace unos días me corroe la idea de si existe la posibilidad de separar la capa de diseño de la capa de negocio en una aplicación desarrollada en PHP de un modo similar a como se puede hacer en aplicaciones desarrolladas en java.

La idea es que después de trabajar con clases java y archivos JSP, no se me ocurre como hacerlo con PHP.

Si alguno de vosotros trabaja o ha trabajado en ambas tecnologías y sabe como ayudarme en este sentido, se lo agradeceré mucho.

P.D: Estoy preparando una clase en PHP que me permita trabajar con fechas formateándolas para distintas aplicaciones, en cuánto descubra como subir el .rar aquí al foro, pues eso, lo subo para quién lo quiera utilizar.

Saludos a todos y grácias!!!
  #2 (permalink)  
Antiguo 08/03/2009, 06:18
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Capas de diseño y de negocio con PHP

Estimado Salvador, bienvenido

El tema no es complejo, para PHP todo es más artesanal (comparando con Java) y la idea de aplicar las capas es relativamente simple:
  1. Crear 3 subdirectorios: interfaz, dominio y persistencia
  2. Para resolver el tema de las rutas relativas, el mejor camino es que cuentes con un archivo de configuración en la raíz de tu proyecto y posteriormente cada capa tenga un config.php que lo que hace es ir al nivel superior y así todas las clases del paquete deben incluirlo.
  3. Recomendado: usar un patrón Factory para concentrar las peticiones de cada capa.

Por ejemplo:

En tu raíz tienes: index.php y config.php con constantes que configuras con la información de tus directorios.

Código PHP:
<?php
error_reporting
(E_ALL E_STRICT);

/* RUTAS */
define('HOME''C:\xampp\htdocs');
define('APP_NAME''miaplicacion');
define('APP'HOME DIRECTORY_SEPARATOR APP_NAME );
define('LOG'APP DIRECTORY_SEPARATOR 'logs' );

/* 3 CAPAS */ 
define('PRE'APP DIRECTORY_SEPARATOR 'presentacion');
define('DOM'APP DIRECTORY_SEPARATOR 'dominio');
define('PER'APP DIRECTORY_SEPARATOR 'persistencia');
Posteriormente desde tu index incluyes el archivo de configuración y si quieres usar una clase de Presentación deberás hacer lo siguiente:

Código PHP:
<?php
require_once 'config.php';
require_once 
PRE DIRECTORY_SEPARATOR 'UsuarioPresentacion.php';

$usuario = new Usuario();

echo 
$usuario::getAll();
En e caso de los paquetes todos deberán incluir este config "falso":

Código PHP:
<?php require_once ("../config.php"?>
Y tus clases de presentación lo usarán de esta forma:

Código PHP:
<?php
require_once 'config.php';
require_once 
DOM DIRECTORY_SEPARATOR 'Usuario.php';

abstract class 
UsuarioPresentacion
{
 
/* código de la clase */
}
En este ejemplo incluyes el archivo de configuración genérico, dependiendo de donde esté haciendo la llamada, tu clase Usuario siempre encuentra el archivo de configuración (y no tienes que estar jugando con "..", ".", etc).

Aquí puedes observar que la clase UsuarioPresentación conoce y depende de la clase Usuario de la capa de dominio, y así la siguiente conocerá a Usuario de la capa de persistencia (ahí está la esencia de las 3 capas):

interfaz -> dominio -> persistencia

En resumen rápido, esta sería la forma de hacerlo "artesanalmente", otras opciones podrías optar por un MVC a través de un framework, pero ya no sería una arquitectura de 3 capas, sería otra solución un poco más especializada.

Busca en Google que encontrarás artículos al respecto.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 08/03/2009, 12:07
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: Capas de diseño y de negocio con PHP

unas consultas enrique:
el codigo que pones "DIRECTORY_SEPARATOR" de donde lo obtenes?, en algun achivo con algo asi:
define (DIRECTORY_SEPARATOR,"/");

y aca:
define('HOME', 'C:\xampp\htdocs');
como seria en el servidor asi:
define('HOME', '/html_public');

salu2
  #4 (permalink)  
Antiguo 08/03/2009, 12:22
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Capas de diseño y de negocio con PHP

Que tal estimado Destor77

La constante DIRECTORY_SEPARATOR es propia del lenguaje y según el sistema operativo donde te encuentres vale "/" o "\".

Y en el define el HOME es la ruta absoluta que usas como base para tu sistema, si tienes un servidor Linux, deberías poner algo como:

/home/nombre_usuario/html_public

Dependiendo de la configuración de tu server / hosting.

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 08/03/2009, 13:52
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: Capas de diseño y de negocio con PHP

Cita:
Iniciado por enriqueplace Ver Mensaje
Que tal estimado Destor77

La constante DIRECTORY_SEPARATOR es propia del lenguaje y según el sistema operativo donde te encuentres vale "/" o "\".

Saludos!
puse DIRECTORY_SEPARATOR en la ayuda de php.net y no me encuentra nada, en que parte puedo encontrar la info al respecto....
  #6 (permalink)  
Antiguo 08/03/2009, 14:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Capas de diseño y de negocio con PHP

http://www.php.net/manual/en/reserved.constants.php

Saludos
  #7 (permalink)  
Antiguo 09/03/2009, 17:07
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: Capas de diseño y de negocio con PHP

muchas thanks
  #8 (permalink)  
Antiguo 11/03/2009, 15:31
Avatar de salvaBCN  
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Gracias por vuestros apuntes, para los que andamos un poco 'fishing' con el 'english'.
hache_te_te_p:barra_barra_tres_uve_dobles.php.net/manual/es/reserved.constants.php
... qué está en $this->spanish

El hache_te_te_p:barra_barra_tres_uve_dobles es por no poder copiaros el enlace tal y como está en el güeb.

Bueno
$this->enlace = 30 + 30." y listo<br />\n";

Última edición por GatorV; 11/03/2009 a las 15:43
  #9 (permalink)  
Antiguo 25/03/2009, 13:36
isra00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Capas de diseño y de negocio con PHP

Bueno, volviendo a la cuestión inicial, se puede imitar el comportamiento de JSP con los motores de plantillas. Smarty, PHPTemplate y PHPTal son los más famosos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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