The dir structure is:
application
models
Milestones
ObserverBroker.php => Application_Model_Milestone_ObserverBroker
Observers
Milestone.php => Application_Model_Observer_Milestone
at Bootstrap.php
$loader->addResourceType('observer','models/observers','Model_Observer');
$loader->addResourceType('observerbroker','models/milestones','Model_Milestone');
The problem I encountered was:
[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
You shouldn’t have to add a resource type for classes in the
Application_Model_namespace.The default module autoloader already includes rules for this, provided your configured
appnamespaceis “Application”As a test, I just created two models,
Application_Model_Test(application/models/Test.php) andApplication_Model_Test_Test(application/models/Test/Test.php) and without adding anything further, was able to create an instance of each in my controller.Edit
On re-reading your question, it looks like you want to store the
Application_Model_Milestone_classes in “Milestone*s*” (plural) and likewise for the Observer classes. Whilst I think you would be better off just storing these underapplication/models/Milestoneandapplication/models/Observerand letting the default autoloader do its thing, it looks like your problem is due to case sensitivity.Your
$loader->addResourceType()calls are using lowercase folder names whereas your directory structure example usesMilestonesandObservers(capital first letters).This will fail on a case-sensitive filesystem.