我的 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) {
/* ... */
}
}
问题是基类将在我的模块中使用(每个模块都有一个服务层),我想知道存储它的最佳位置在哪里。我的数据库层有完全相同的场景。在我的脑海中,我能想到几个可能性:
- 每个模块中的副本。不是一个优雅的解决方案,也不容易维护。
- “应用程序”模块中的一个副本,每个模块都使用这个副本。创建跨模块依赖项。
- 在
vendor
目录中,因此在任何模块目录之外。我对 Composer 还不太熟悉,但我想我可以将它作为依赖项添加到那里?
所以基本上问题是在哪里放置几个模块使用的类。让它发挥作用并不难,但问题是尽可能以最好的方式做到这一点。