目录结构是:
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
答案 0 :(得分:0)
您不必为Application_Model_
命名空间中的类添加资源类型。
默认模块自动加载器已包含此规则,前提是您配置的appnamespace
为“应用程序”
作为测试,我刚刚创建了两个模型,Application_Model_Test
(application / models / Test.php)和Application_Model_Test_Test
(application / models / Test / Test.php)并且没有添加任何其他内容,能够在我的控制器中创建每个实例。
修改强>
在重新阅读您的问题时,您似乎希望将Application_Model_Milestone_
类存储在“Milestone * s *”(复数)中,同样也存储在Observer类中。虽然我认为你最好只在application/models/Milestone
和application/models/Observer
下存储这些内容并让默认自动加载器执行此操作,但看起来你的问题是由于区分大小写。
您的$loader->addResourceType()
来电使用小写文件夹名称,而您的目录结构示例使用Milestones
和Observers
(大写首字母)。
对于区分大小写的文件系统,这将失败。