首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZendFramework1.11+Doctrine2Integration: Autoloading /user.php ->模型\User

ZendFramework1.11+Doctrine2Integration: Autoloading /user.php ->模型\User
EN

Stack Overflow用户
提问于 2010-12-17 02:16:34
回答 2查看 2.4K关注 0票数 0

如何设置自动加载,以便使目录结构类似于

代码语言:javascript
复制
/application
    /models  <<--- plural
    ...

并让Zend/Doctrine加载Application\Model\User。注意模型是单数的。

目前,我有自动加载程序设置,如下所示(在Bootstrap.php _initDoctrine()中)

代码语言:javascript
复制
$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');

目前,当我尝试使用Application\Model\User时,我得到

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

它试图包括application\models\Application\Model\User.php。嗯比我想象的要好。我怎样才能修好它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-17 13:29:55

尝试:

代码语言:javascript
复制
$modelsClassLoader = new ClassLoader('Application\Model', __DIR__ . '/models');
$modelsClassLoader->register();
票数 2
EN

Stack Overflow用户

发布于 2010-12-17 13:51:53

我解决这个问题的方法是用Doctrine的autoloader/ClassLoader代替Zend的

代码语言:javascript
复制
// 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();

我的错误之一是我应该使用realpath(__DIR__ . '/..'),它与我的目录结构.

代码语言:javascript
复制
/Tickle (Project name)
    /application
        /models
            /proxies
...

指向"Tickle",以便当理论附加到“Application/Model/User.php”路径时,它将类似于"/Tickle/Application/Models/Users.php“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4467139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档