Как реализовать сервисный уровень в Zend Framework?

Я ищу некоторые полезные ресурсы, чтобы узнать, как реализовать внутренний уровень обслуживания в Zend Framework. Это интересное сообщение Bookie Link , но без конкретных примеров кода.

  • Где поставить классы обслуживания ( /application/modules/modulename/services/ ?);
  • Как выполнить автозагрузку (пользовательский автозагрузчик?)
  • Наиболее распространенные службы (пользователь, аутентификация, корзина, кеш, фид?)
  • Примеры реализации (любые репозитории github?)
  • Хорошая практика?

  • PHP-тернарный оператор не анализирует внутреннее свойство класса?
  • Получение PEAR для работы в XAMPP (стек Apache / MySQL в Windows)
  • IE (HTTPS): генерация PDF из php-файла не работает
  • Как запустить скрипт PHP с помощью задачи расписания Windows?
  • Как проверить, по PHP, если мой скрипт подключается к SMTP-серверу
  • Разделить на две переменные?
  • Как установить обычную общую сумму перед оформлением заказа в magento?
  • Как получить HTML-код веб-страницы в PHP?
  • Отправьте дату PHP на javascript date Формат
  • Вызов функции-члена bind_param () для не-объекта MySQLi
  • Помощь с cURL в Python
  • Создание экземпляров класса по строкам с использованием пространств имен PHP 5.3
  • 3 Solutions collect form web for “Как реализовать сервисный уровень в Zend Framework?”

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

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

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

    Но если ваше приложение больше или если по какой-то другой причине вы хотите разделить классы на другие каталоги, вы можете создать свои собственные подкаталоги в каталоге приложения и использовать что-то вроде кода ниже (который будет существовать в вашем application/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+ в этом ответе?)

    Вам не нужно взломать, чтобы получить уровень обслуживания. Автозагрузчик по умолчанию имеет пространство имен ресурсов Service_ с папкой служб внутри приложения. Таким образом, он загрузит сервисный уровень из приложения \ services, классы должны следовать шаблону именования Service_ *.

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

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

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

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

    PHP is the Best Programming Language in the world.