2

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. 「アプリケーション」モジュールに 1 つのコピーがあり、各モジュールはこの 1 つのコピーを使用します。モジュール間の依存関係を作成します。
  3. ディレクトリ内、vendorつまりモジュールディレクトリの外。Composer にはまだあまり慣れていませんが、そこに依存関係として追加できると思いますか?

したがって、基本的に問題は、いくつかのモジュールで使用されるクラスをどこに配置するかです。それを機能させるのは難しくありませんが、問題は可能な限り最善の方法でそれを行うことです.

4

1 に答える 1

4

すべての基本クラスと関数を独立した共通モジュールに統合することをお勧めします。他のモジュールはこの共通モジュールに依存します。

あなたが見ることができる参照がたくさんあります:

共通モジュールを作成したら、composer によってモジュール依存関係を定義し、1 行のコマンドですべての依存モジュールをインストールできます。

于 2013-01-18T03:34:52.733 に答える