Как установить ресурс, который не отображается - PullRequest
0 голосов
/ 19 марта 2011

Структура dir:

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

1 Ответ

0 голосов
/ 19 марта 2011

Вам не нужно добавлять тип ресурса для классов в пространстве имен Application_Model_.

Автоматический загрузчик модуля по умолчанию уже включает в себя правила для этого, при условии, что для настроенного appnamespace установлено «Приложение»

В качестве теста я только что создал две модели: Application_Model_Test (application / models / Test.php) и Application_Model_Test_Test (application / models / Test / Test.php) и, не добавляя ничего, смогсоздайте экземпляр каждого в моем контроллере.

Edit

При повторном чтении вашего вопроса, похоже, что вы хотите сохранить классы Application_Model_Milestone_ в "Milestone"* s * "(множественное число) и аналогично для классов Observer.Хотя я думаю, что вам было бы лучше просто хранить их в application/models/Milestone и application/models/Observer и позволить автозагрузчику по умолчанию делать свое дело, похоже, что ваша проблема связана с чувствительностью к регистру.

Ваши $loader->addResourceType() вызовыиспользуются имена папок в нижнем регистре, тогда как в примере структуры каталогов используются Milestones и Observers (заглавные первые буквы).

В файловой системе, чувствительной к регистру, произойдет сбой.

...