【发布时间】:2011-10-24 21:52:21
【问题描述】:
我的 zend 应用程序已创建,一切似乎都井然有序,但每次我尝试执行以下操作时:
$accProducts = new Application_Models_AccProductsMapper();
只得到:
警告:include_once(Application/Models/AccProductsMapper.php):无法打开流:第 148 行的 /home/blah/blah/blah/Loader.php 中没有这样的文件或目录
但是,AccProductsMapper.php 文件确实存在于这样的目录中,zend 应用程序中的目录都是小写的。
我花了很多时间寻找解决这个问题的方法,但根本没有好的结果。
Bootstrap.php
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
protected function _initAutoload()
{
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH));
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace(array('App','My_'));
return $moduleLoader;
}
}
【问题讨论】:
-
重命名你的目录。您应该像区分大小写一样工作(即使它们不在您的系统上)。此外,您可以依靠 Zend 中的所有变形来使用 CamelCase。
-
谢谢老兄!但它不起作用......只得到一个空白屏幕......我在其他控制器中看到调用映射器的方式类似于: $var = new Application_Model_AccProductsMapper();这似乎是可笑的 b/c 所谓的“模型”根本不存在,但是“模型”是不是我做错了什么???另外我在很多帖子中看到他们使用模块,到目前为止我没有,使用模块是必须的???
-
您尝试创建
Application_Models_AccProductsMapper的实例,而类应该是名称Application_Model_AccProductsMapper(注意模型和模型的区别)。它是 plural 版本小写,是您放置大写 singular 版本的文件夹。所以Foo_Model_Bar这个类位于Foo/models/Bar.php。 -
@Jurian Sluiman 是的,没错,单数或复数都得到相同的结果:什么都没有!
标签: zend-framework class frameworks directory mapper