Как реализовать уровень служб в Платформе Зенда? [закрытый]

20
задан user1301433 29 March 2012 в 20:56
поделиться

2 ответа

Я думаю, что ответ на этот вопрос зависит от ваших потребностей, ваших временных ограничений и вашего общего подхода к / стиля разработки программного обеспечения.

Недавно я (A) принял решение использовать Zend Framework в небольшом, но сложном веб-приложении, у которого очень сжатые сроки, и (B) потратил МНОГО времени на изучение решений ORM и различных структур приложений ZF в целом. Я пришел к выводу, что не существует универсального решения и что вы должны свободно проявлять творческий подход и создавать структуру приложения, которая вас устраивает.

Если у вас жесткие временные ограничения и приложение не слишком велико, вы можете просто создать классы с такими именами, как Application_Model_BlahService , и сохранить их в каталоге application / models и они будут загружены автозагрузчиком по умолчанию (при условии, что автозагрузчик был загружен правильно).

Но если ваше приложение больше или по какой-то другой причине вы хотите разделить классы на большее количество каталогов, вы можете создать свои собственные подкаталоги в каталоге приложения и использовать что-то вроде приведенного ниже кода (который может существовать в вашем приложении / Bootstrap.php ), чтобы добавить эти классы в автозагрузчик:

protected function _initResourceLoader()
{
    $this->_resourceLoader->addResourceType( 'service', 'services', 'Service' );
    $this->_resourceLoader->addResourceType( 'serviceplugin', 'services/plugins', 'Service_Plugin' );
}

Затем вы можете создать такие классы, как Application_Service_Invoice , которые будут находиться в application / services / Invoice.php и Application_Service_Plugin_TaxPlugin , которые будут находиться в application / services / plugins / TaxPlugin.php . (Примечание: приведенный выше код предполагает, что вы используете Zend_Application ).

Теоретически вы можете сделать это настолько далеко, насколько захотите, и отделить классы моделей от классов обслуживания от классов доступа к данным и т. Д. И т. Д. Но опять же, это зависит от стиля разработки, который вы предпочитаете, размера команда и, в некоторой степени, какие требования предъявляет к вам ваш уровень настойчивости.

И последнее, что нужно сделать: посмотрите в Zend_Application_Module_Autoloader список ресурсов, которые по умолчанию добавляются в автозагрузчик. (Следует ли мне упомянуть, что в этом ответе я имею в виду ZF 1.8+?)

22
ответ дан 30 November 2019 в 00:05
поделиться

В принципе, вы могли бы положить их куда угодно; где-то близко к модели, скорее всего, будет иметь смысл.

В качестве примера вы можете взглянуть на:

  • ZFPlanet : пример планеты, созданной с помощью ZF
    • Не уверен, что это закончено, но есть несколько классов, контроллеров, моделей, файлов конфигурации, ...
    • Это означает, что прохождение кода может помочь (для меня это имеет значение для некоторых вещей)
  • И особенно его application / modules / zfplanet / models / Service каталог
    • , который содержит два класса.

(На самом деле, я надеюсь, что именно это вы имели в виду под службой)

2
ответ дан 30 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: