2012-07-13 56 views
2

我在我的項目中使用了Zend Framework和Doctrine 2。除了自動加載器不會從Doctrine存儲庫加載Zend類以外,一切正常。Doctrine 2知識庫中的Zend Framework自動加載器

這裏是我的Zend自動加載引導部分:

/** 
* Register namespace Default_ 
* @return Zend_Application_Module_Autoloader 
*/ 
protected function _initAutoload() { 
    $autoloader = new Zend_Application_Module_Autoloader(array(
     'namespace' => 'Default_', 
     'basePath' => dirname(__FILE__), 
    )); 
    return $autoloader; 
} 

這裏是我的原則初始化引導部分:

/** 
* Initialize Doctrine 
* @return Doctrine_Manager 
*/ 
public function _initDoctrine() { 
    // include and register Doctrine's class loader 
    require_once('Doctrine/Common/ClassLoader.php'); 
    $classLoader = new \Doctrine\Common\ClassLoader(
     'Doctrine', 
     APPLICATION_PATH . '/../library/' 
    ); 
    $classLoader->register(); 

    $classLoader = new \Doctrine\Common\ClassLoader(
     'Repositories', 
     APPLICATION_PATH . '/../library/Model' 
    ); 
    $classLoader->register(); 

    // create the Doctrine configuration 
    $config = new \Doctrine\ORM\Configuration(); 

    // setting the cache (to ArrayCache. Take a look at 
    // the Doctrine manual for different options !) 
    $cache = new \Doctrine\Common\Cache\ApcCache; 
    $config->setMetadataCacheImpl($cache); 
    $config->setQueryCacheImpl($cache); 

    // choosing the driver for our database schema 
    // we'll use annotations 
    $driver = $config->newDefaultAnnotationDriver(
     APPLICATION_PATH . '/../library/Model' 
    ); 
    $config->setMetadataDriverImpl($driver); 

    // set the proxy dir and set some options 
    $config->setProxyDir(APPLICATION_PATH . '/../library/Model/Proxies'); 
    $config->setAutoGenerateProxyClasses(true); 
    $config->setProxyNamespace('Model\Proxies'); 

    // now create the entity manager and use the connection 
    // settings we defined in our application.ini 
    $connectionSettings = $this->getOption('doctrine'); 
    $conn = array(
     'driver' => $connectionSettings['conn']['driv'], 
     'user'  => $connectionSettings['conn']['user'], 
     'password' => $connectionSettings['conn']['pass'], 
     'dbname' => $connectionSettings['conn']['dbname'], 
     'host'  => $connectionSettings['conn']['host'] 
    ); 
    $entityManager = \Doctrine\ORM\EntityManager::create($conn, $config); 

    // push the entity manager into our registry for later use 
    $registry = Zend_Registry::getInstance(); 
    $registry->entitymanager = $entityManager; 

    return $entityManager; 
} 

我該如何解決呢?

回答

1

你_initAutoload完全不必要。 只需添加

autoloadernamespaces[] = Default 
autoloadernamespaces[] = Doctrine 

你的application.ini

1

我同意_initAutoload()不應該是必要的,但我懷疑你需要這樣的的application.ini:

autoloaderNamespaces[] = "Doctrine" 
autoloaderNamespaces[] = "Model" 
相關問題