Foros del Web » Programando para Internet » PHP » Zend »

Problema con el autoloader y mis sesiones

Estas en el tema de Problema con el autoloader y mis sesiones en el foro de Zend en Foros del Web. Hola buenas. Tengo un sistema de autenticación hecho con Zend_Auth. Decidí cambiar el resultrow que mete el Auth por defecto en la sesión, por un ...
  #1 (permalink)  
Antiguo 24/06/2011, 12:51
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Problema con el autoloader y mis sesiones

Hola buenas. Tengo un sistema de autenticación hecho con Zend_Auth. Decidí cambiar el resultrow que mete el Auth por defecto en la sesión, por un objeto de mis modelos (Model_User en este caso). La cuestión es que funciona todo normal hasta que se recarga la página. Mi objeto en la sesión pasa a tener esta forma:

Código:
array(1) {
  ["user"] => array(1) {
    ["storage"] => object(__PHP_Incomplete_Class)#9 (15) {
      ["__PHP_Incomplete_Class_Name"] => string(10) "Model_User"
      ["id"] => string(1) "4"
      ["email"] => string(22) "[email protected]"
      ["name"] => string(6) "marcos"
    }
  }
}
Con lo cual, intuyo que el problema es que no se carga la definición de la clase antes de la sesión. Aquí os dejo mi bootstrap por si alguien sabe cómo puedo solucionar el problema:

Código PHP:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    protected function 
_initDatabase() {
        
$this->bootstrap 'db' );
        
$db $this->getResource 'db' );
        
Zend_Registry::set 'dbAdapter'$db );
    }
    
    protected function 
_initSession() {
        
Zend_Session::start ();
        
//Set new auth storage session ($_SESSION['user])
        
Zend_Auth::getInstance ()->setStorage ( new Zend_Auth_Storage_Session 'user' ) );
    }
    
    protected function 
_initAutoLoad() {
        
Zend_Loader_Autoloader::getInstance()->registerNamespace('My_');
    }
    
    protected function 
_initResourceAutoload() {
        
$resourceLoader = new Zend_Loader_Autoloader_Resource 
            array (
                
'basePath' => APPLICATION_PATH
                
'namespace' => ''
                
'resourceTypes' => array (
                    
'model' => array (
                        
'path' => 'models/'
                        
'namespace' => 'Model_' 
                    
)
                )
            )
        );
        return 
$resourceLoader;
    }
    protected function 
_initModuleAutolad() {
        
$autoloader = new Zend_Application_Module_Autoloader 
            array (
                
'namespace' => ''
                
'basePath' => dirname __FILE__ ) . '/modules/default' 
            );
        
//Zend_Debug::dump($autoloader);
        
return $autoloader;
    }

}
¿Alguna solución? Saludos
  #2 (permalink)  
Antiguo 24/06/2011, 13:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con el autoloader y mis sesiones

Primero deberías arreglar ese Bootstrap, lo único que debería tener es _initSession, el resto no es necesario.

_initResourceAutoload, o bien dejas en blanco el appnamespace del application.ini o bien le agregas a tus modelos el prefijo Application(así es como debería ser, ej Application_Model_User)

_initModuleAutolad, deberias crear en el modulo un Bootstrap que extienda de Zend_Application_Module_Bootstrap

_initAutoLoad, deberías agregar a tu application.ini autoloaderNamespaces[] = "My"

_initDatabase, ya tienes en el registro la clave db, para que agregar otra con el mismo valor ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 24/06/2011, 15:34
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Problema con el autoloader y mis sesiones

Bueno ya he limpiado mi Bootstrap, el problema es que ahora no me cargan los formularios de los módulos. ¿Tengo que volver a definir donde tiene que buscar los recursos en el bootstrap del módulo? ¿Cómo me aseguro de que la aplicación ejecute el Default_Bootstrap?

Saludos
  #4 (permalink)  
Antiguo 24/06/2011, 15:44
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con el autoloader y mis sesiones

Los Bootstrap's se ejecutan de forma automatica, si queres estar seguro que lo esta haciendo agrega un _init con un die dentro por ejemplo.

Con respecto a los formularios, el nombre de la clase debe tener el prefijo del modulo por ej si el modulo es Default un form podria ser Default_Form_User.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 25/06/2011, 07:54
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Problema con el autoloader y mis sesiones

Bien, perfecto. Arreglando el Bootstrap de repente me ha desaparecido el problema con la sesión. Muchas gracias!

Etiquetas: autoloader, frameworks-y-php-orientado-a-objetos, sesiones
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 19:40.