2010-12-17 11 views
0

Wie richte ich das automatische Laden, so dass ich meine Verzeichnisstruktur wieZend Framework 1.11 + Doctrine 2 Integration: Autoloading Modelle Modelle/user.php -> Modell User

haben
/application 
    /models <<--- plural 
    ... 

Und haben Zend/Lehre Autoloader laden Application\Model\User. Hinweis Modell ist einzigartig.

Zur Zeit habe ich Autoloader-Setup wie folgt (in Bootstrap.php _initDoctrine())

$zendAutoloader = Zend_Loader_Autoloader::getInstance(); 

// Symfony 
$autoloader = array(new ClassLoader('Symfony'), 'loadClass'); 
$zendAutoloader->pushAutoloader($autoloader, 'Symfony\\'); 

// Doctrine 
$autoloader = array(new ClassLoader('Doctrine'), 'loadClass'); 
$zendAutoloader->pushAutoloader($autoloader, 'Doctrine\\'); 

// Models 
$autoloader = array(new ClassLoader('Application\\Model', realpath(__DIR__ . '/models')), 'loadClass'); 
$zendAutoloader->pushAutoloader($autoloader, 'Application\\Model'); 

// Proxies 
$autoloader = array(new ClassLoader('Application\\Model\\Proxy', realpath(__DIR__ . '/models/proxies')), 'loadClass'); 
$zendAutoloader->pushAutoloader($autoloader, 'Application\\Model\\Proxy'); 

Derzeit wenn ich Application\Model\User Versuchen Sie es mit, ich

require(D:\Projects\Tickle\application\models\Application\Model\User.php): failed to open stream: No such file or directory

Sein Versuch application\models\Application\Model\User.php schließen . hmm es ist wierder als ich erwartet hatte. Wie kann ich es trotzdem beheben?

Antwort

2

Versuchen:

$modelsClassLoader = new ClassLoader('Application\Model', __DIR__ . '/models'); 
$modelsClassLoader->register(); 
0

So wie ich beschlossen diese

// disable Zend Autoloader 
spl_autoload_unregister(array('Zend_Loader_Autoloader','autoload')); 

// use Doctrine2's Class Loader 
$autoloader = new ClassLoader('Zend'); 
$autoloader->setNamespaceSeparator('_'); 
$autoloader->register(); 

// Symfony 
$autoloader = new ClassLoader('Symfony'); 
$autoloader->register(); 

// Doctrine 
$autoloader = new ClassLoader('Doctrine'); 
$autoloader->register(); 

// Application 
$autoloader = new ClassLoader('Application', realpath(__DIR__ . '/..')); 
$autoloader->register(); 

1 meiner Fehler der Lehre des Autoloaders/ClassLoader statt Zend zu verwenden war, dass ich realpath(__DIR__ . '/..') die mit meinem Verzeichnis verwendet werden soll Struktur, ...

/Tickle (Project name) 
    /application 
     /models 
      /proxies 
... 

Punkte zu "Tickle", s o wenn Doktrin den Pfad "Application/Models/User.php" anfügt, sieht es wie "/Tickle/Application/Models/Users.php" aus, welches existiert