Zend framework 如何设置未映射的资源
dir结构是:Zend framework 如何设置未映射的资源,zend-framework,autoload,Zend Framework,Autoload,dir结构是: application models Milestones ObserverBroker.php => Application_Model_Milestone_ObserverBroker Observers Milestone.php => Application_Model_Observer_Milestone 在Bootstrap.php $loader->
application
models
Milestones
ObserverBroker.php => Application_Model_Milestone_ObserverBroker
Observers
Milestone.php => Application_Model_Observer_Milestone
在Bootstrap.php
$loader->addResourceType('observer','models/observers','Model_Observer');
$loader->addResourceType('observerbroker','models/milestones','Model_Milestone');
我遇到的问题是:
[f@gail]$ php zfrun.php \
> --environment development -a task.create-milestone -m '%s' \
> -p '%s'
PHP Fatal error: Class 'Application_Model_Milestone_ObserverBroker' not found in /var/www/html/sites/plugin_handler/application/controllers/TaskController.php on line 55
Fatal error: Class 'Application_Model_Milestone_ObserverBroker' not found in /var/www/html/sites/plugin_handler/application/controllers/TaskController.php on line 55
[f@gail]$ php zfrun.php \
> --environment development -a task.update-milestone -m '%s' -o '%s' \
> -p '%s'
PHP Fatal error: Class 'Application_Model_Milestone_ObserverBroker' not found in /var/www/html/sites/plugin_handler/application/controllers/TaskController.php on line 81
您不必为
Application\u Model\u
命名空间中的类添加资源类型
默认模块自动加载程序已经包含了相关规则,前提是您配置的appnamespace
为“应用程序”
作为一个测试,我刚刚创建了两个模型,Application\u Model\u test
(Application/models/test.php)和Application\u Model\u test\u test
(Application/models/test/test.php),无需进一步添加任何内容,就可以在控制器中创建每个模型的实例
编辑
在重读您的问题时,您似乎希望将应用程序\u模型\u里程碑\u
类存储在“里程碑*s*”(复数)中,对于观察者类也是如此。虽然我认为您最好将这些存储在application/models/Milestone
和application/models/Observer
下,并让默认自动加载器完成它的工作,但您的问题似乎是由于区分大小写
您的$loader->addResourceType()
调用使用小写文件夹名,而目录结构示例使用里程碑
和观察者
(大写字母)
这将在区分大小写的文件系统上失败。我已将目录里程碑更改为里程碑,将观察者更改为观察者。谢谢你的回答。我用这个来实现trac插件上的观察者模式。