Где хранить класс, который используется в нескольких модулях ZF2? [закрыто]


У меня есть уровень обслуживания в моем приложении Zend Framework 2. На этом уровне у меня есть абстрактный базовый класс, который расширяют все классы обслуживания, как показано ниже.

Базовый класс:

namespace User\Service;

use Zend\ServiceManager\ServiceManagerAwareInterface;
use Zend\ServiceManager\ServiceManager;

class AbstractService implements ServiceManagerAwareInterface {
    protected $serviceManager;

    public function setServiceManager(ServiceManager $serviceManager) {
        $this->serviceManager = $serviceManager;
    }

    public function getServiceManager() {
        return $this->serviceManager;
    }
}

Класс обслуживания:

namespace User\Service;

use User\Service\AbstractService;

class UserService extends AbstractService {
    public function register($id, $username, $password) {
        /* ... */
    }
}

Дело в том, что базовый класс будет использоваться во всех моих модулях (каждый модуль будет иметь уровень обслуживания), и мне интересно, где его лучше всего хранить. У меня точно такой же сценарий для моего уровня базы данных. Прочь в верхней части моей головы я могу придумать несколько возможностей:

  1. Копия в каждом модуле. Не очень элегантное решение и не простое в обслуживании.
  2. Одна копия в модуле "Приложение", и каждый модуль использует эту одну копию. Создает межмодульные зависимости.
  3. В каталоге vendor и, следовательно, вне любого каталога модулей. Я еще не слишком хорошо знаком с композитором, но, думаю, я мог бы добавить его в качестве зависимости?

Итак, в основном вопрос в том, где разместить классы, которые используются несколькими модулями. Заставить его работать нетрудно, но проблема в том, чтобы сделать это наилучшим возможным способом.

Author: Andy0708, 2013-01-18

1 answers

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

Есть много ссылок, на которые вы могли бы взглянуть:

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

 4
Author: AlloVince, 2013-01-18 03:34:52