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 つのコピーがあり、各モジュールはこの 1 つのコピーを使用します。モジュール間の依存関係を作成します。
- ディレクトリ内、
vendor
つまりモジュールディレクトリの外。Composer にはまだあまり慣れていませんが、そこに依存関係として追加できると思いますか?
したがって、基本的に問題は、いくつかのモジュールで使用されるクラスをどこに配置するかです。それを機能させるのは難しくありませんが、問題は可能な限り最善の方法でそれを行うことです.