【发布时间】:2011-05-25 07:42:42
【问题描述】:
我已经开始记录自己有关 Zend Framework 的内容,因为我很快就会开始在生产中使用它。一切都很好,直到我开始使用和使用模型:)。
根据 Zend 的建议,模型的默认位置是 application/models/DbTable,所有模型都将被放入其中。这个位置迫使我将模型命名为 Application_Model_DbTable_Actors。对我来说,这是一个很长的模型名称,而且不是一个易于使用的名称。
我想要获取的目录结构是这样的:
application/
models/
actors/
ActorsMapper.php
Actor.php
books/
BooksMapper.php
Book.php
等等
所以我所有的模型都将驻留在models 目录下,但会分组在它们自己的目录中。
每个类的命名应为ActorsMapper 或Actor(它们都将扩展Zend_Db_Table 或Zend_Db_Row)。
我知道在我的控制器中,如果我使用 $actors = new ActorsMapper() 之类的东西实例化一个模型,我将得到一个 Fatal error: Class not found,这就是为什么我要寻求您的帮助。
为了解决这个问题,我尝试将我的 models 目录添加到 include_path:
-
第一次尝试
将
includePaths.models = APPLICATION_PATH "/models"添加到application.ini
但是这个甚至没有将它添加到包含路径中
-
第二次尝试:
使用
set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), realpath(APPLICATION_PATH . '/models'), get_include_path(), )));明确添加路径
但即使这在包含的路径中添加了该路径,错误仍然存在。
我在Zend_Db_Table 的official documentation 中看到了这种模型命名,但我找不到与自动加载它们相关的任何内容。
感谢大家的任何解决方案。
附言zend 框架版本是 1.11.1
【问题讨论】:
-
您需要深入研究自动加载器并对其进行扩展以识别此目录结构和命名空间。否则你会被 zend 方式束缚。
-
好的,看来这是唯一的方法。谢谢!
标签: php zend-framework models zend-autoloader