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

Estructura del proyecto

Estas en el tema de Estructura del proyecto en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas Estoy trabajando en un proyecto, para tratar de aprender ZendFramework. Luego de modificarlo para poder utilizar Doctrine 2, me han surgido algunas dudas. He ...
  #1 (permalink)  
Antiguo 04/01/2012, 09:34
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Estructura del proyecto

Buenas

Estoy trabajando en un proyecto, para tratar de aprender ZendFramework.

Luego de modificarlo para poder utilizar Doctrine 2, me han surgido algunas dudas.

He visto por ahí, que es comun utilizar una capa "Domain" y dentro de ella las entities, repositories, y services


Mi duda es : donde ubicar físicamente esa capa "Domain", si dentro de cada módulo? o en la carpeta library?

es decir

application/modules/catalogo/domain/entities

o

library/My/Domain/Catalogo/Entity/

Espero se entienda algo de lo que quiero preguntar

SAludos
  #2 (permalink)  
Antiguo 04/01/2012, 09:39
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Estructura del proyecto

Yo los entities, proxies mappers, etc los meto en la carpeta application/models
__________________
blog
  #3 (permalink)  
Antiguo 04/01/2012, 09:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Estructura del proyecto

Cita:
Iniciado por pablofmorales Ver Mensaje
Yo los entities, proxies mappers, etc los meto en la carpeta application/models
Exacto ya que son parte del modelo de tu aplicación y no es como tal pate de la librería...
  #4 (permalink)  
Antiguo 04/01/2012, 09:53
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Estructura del proyecto

Cita:
Iniciado por GatorV Ver Mensaje
Exacto ya que son parte del modelo de tu aplicación y no es como tal pate de la librería...
La duda seguramente surge porque hay varios proyectos en github donde lo hacen en las librerias, vi mucho de esto.
__________________
blog
  #5 (permalink)  
Antiguo 04/01/2012, 09:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Estructura del proyecto

Cita:
Iniciado por pablofmorales Ver Mensaje
La duda seguramente surge porque hay varios proyectos en github donde lo hacen en las librerias, vi mucho de esto.
Sí yo también lo he visto, pero solo es cuestión de configurar correctamente el Autolader para indicarle donde generar las clases
  #6 (permalink)  
Antiguo 04/01/2012, 11:51
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Estructura del proyecto

Hola Pablo, Gator, gracias por sus respuestas

Cuando dices "Yo los entities, proxies mappers, etc los meto en la carpeta application/models"

la estructura podría quedar ordenada así ?:

application/modules/admin
application/modules/catalogo

application/models/catalogo
application/models/catalogo/entities


o a lo mejor de esta manera:


application/modules/catalogo/models/
application/modules/catalogo/models/entities



disculpen la confusión, estoy bastante perdido con esto :S y lo veo necesario para tener bien organizado el proyecto y poder continuar..

Última edición por punk567; 04/01/2012 a las 12:00
  #7 (permalink)  
Antiguo 04/01/2012, 12:07
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Estructura del proyecto

Mi ideal seria dentro de models

una carpeta Entities
una carpeta Proxies
una carpeta Repositories

y en el root de models los mappers
__________________
blog
  #8 (permalink)  
Antiguo 04/01/2012, 13:24
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Estructura del proyecto

Bien, durante varias horas estuve buscando algo de información al tema y no encontré algo concreto o un ejemplo completo, más que nada cosas aisladas. En Github hay muchos ejemplos, bastante complejos, pero me pareció que todos manejaban el tema de manera distinta. Con lo que intenté hacer mas o ménos algo así,

Un repositorio, una entidad y un servicio.. que están en application/modules/catalogo/models/
y cada una tiene
namespace Repository;
namespace Entity;
namespace Service;

en el Controller dentro del mismo módulo, "llamo" a service , así

$this->productService = $this->_helper->Service('Service\ProductoService');

con un Action Helper, que esta en 'library' MiProyecto/....


y devuelve este error :

Fatal error: Class 'Service\ProductoService' not found in ..library\MiProyecto\Controller\Action\Helper\Serv ice.php


$this->productService = $this->_helper->Service('\MiProyecto\Domain\Catalogo\Service\Prod uctoService');

eso funcionaba, porque estaba todo en MiProyecto\Domain\Catalogo

por la ayuda me doy cuenta que, en 'library' no se ubica el modelo, que es relativo a cada módulo. y que va dentro de 'application'



En el root de models van los mappers, eso tiene que ver con el Namespace, o autoload?

tenía esto en el Boostrap del módulo, pero no logré corregirlo


Código:
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Catalogo',
            'basePath' => dirname(__FILE__) . '/modules/catalogo',
            ));
            return $autoloader;
    }
    
  public function initResourceLoader(){
        $resourceLoader = parent::getResourceLoader();
        $resourceLoader->addResourceTypes(
            array(
                'services' => array(
                    'namespace' => 'Service',
                    'path' => 'models/services'
                ),
                'entities' => array( //if you also use doctrine2 orm
                    'namespace' => "Entity",
                    'path' => 'models/entities'
                ),
                'repositories' => array(
                    'namespace' => 'Repository',
                    'path' => 'models/repositories'
                )
            )
        );
    }


Saludos

Última edición por punk567; 04/01/2012 a las 13:31
  #9 (permalink)  
Antiguo 04/01/2012, 17:53
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Estructura del proyecto

Hola, sigo intentando que las clases entities, y repositories puedan ser leídas desde el controller

Con la siguiente estructura:

Código:
application/modules/catalogo/
                            /models
                                   /entities
con este código en el Bootstrap del módulo

Código:
protected function _initAutoload()
    {
           
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Catalogo_',
            'basePath'  => APPLICATION_PATH . '/modules/catalogo',
            'resourceTypes' => 
            array(                            
                    'services' => array('path' => '/models/services', 'namespace' => 'Model_Service'),
                    'entities' => array('path' => '/models/entities', 'namespace' => 'Model_Entity'),
                    'repositories' => array('path' => '/models/repositories','namespace' => 'Model_Repository')            
                )));
        
            return $autoloader;
    }
Y en IndexController

Código PHP:
$this->productService =  $this->_helper->Service('Catalogo_Model_Service_Producto'); 
Esto funciona bien, pero a veces las cosas funcionan aunque no esten hechas de la mejor manera.
Estaría bueno si por favor alguien puede orientarme, o indicar si estoy en un camino incorrecto o conceptualmente incorrecto, o recomendar alguna manera mejor de organizar la estructura o el código

Saludos
  #10 (permalink)  
Antiguo 05/01/2012, 08:05
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Estructura del proyecto

Disculpar por mi ignorancia, cuando habláis de entities, os referis a las clases que hacen referencia a cada una de las tablas de vuestra base de datos?

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #11 (permalink)  
Antiguo 05/01/2012, 18:16
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Estructura del proyecto

Si es por ignorancia...

Pero creo que si, las entities son clases que reflejan tablas de la base de datos.

Tratando de entender el patrón Dao, creo que una entidad puede tener asociado un repositorio.
El repositorio tiene las operaciones para esas tablas (obtenerTodos(), buscar()) y debe cumplir una interface que debe ser genérica, para poder utilizarse con cualquier tipo de almacenamiento de datos, como una base de datos, un archivo o hasta web services según leí por ahí. Esto por si en algún momento ocurre que hay que cambiar el motor de db.

También he escuchado que los repositorios pueden manejar varios Daos, esto no termino de asimilarlo.

Saludos
  #12 (permalink)  
Antiguo 05/01/2012, 19:43
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Estructura del proyecto

Muy interesante, y donde puedo encontrar una interfaz standard para crear mis entidades de esa manera?

Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #13 (permalink)  
Antiguo 05/01/2012, 21:11
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Estructura del proyecto

La verdad no sabría decirte, alguna búsqueda en google a lo mejor.

Saludos
  #14 (permalink)  
Antiguo 06/01/2012, 06:38
Avatar de punk567  
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 265
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Estructura del proyecto

Dentro de lo que estuve mirando esto me pareció de lo mejor

http://blog.fedecarg.com/2009/09/19/...d-datamappers/

Etiquetas: zend
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 14:39.