在哪里保留一个用于多个ZF2模块的类?

时间:2013-01-18 01:03:09

标签: php module zend-framework2

我的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目录中,因此在任何模块目录之外。我对Composer还不太熟悉,但我想我可以把它添加为依赖者吗?
  4. 所以基本上问题是在哪里放置几个模块使用的类。要让它发挥作用并不困难,但问题是以最好的方式做到这一点。

1 个答案:

答案 0 :(得分:4)

我认为一个好的做法是将所有基类和函数组合成一个独立的公共模块,其他模块将依赖于这个通用模块。

你可以看一下很多参考文献:

拥有一个通用模块后,您可以通过composer定义模块依赖关系,然后只需一行命令来安装所有依赖模块。