Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:usage:ja:provider

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:provider [2020/08/29 17:09]
y2sunlight
apricot:usage:ja:provider [2020/09/03 13:46] (現在)
y2sunlight [Apricot サービスプロバイダー]
行 17: 行 17:
   * [[apricot:usage:ja:validation|Apricot バリデーション]]   * [[apricot:usage:ja:validation|Apricot バリデーション]]
   * Apricot サービスプロバイダー   * Apricot サービスプロバイダー
 +  * [[apricot:usage:ja:authentication|Apricot ユーザ認証]]
   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]
  
 ---- ----
  
-Apricotでは、DIコンテナーに [[https://github.com/thephpleague/container|League/Container]] を使用しています。League/Container ではサービスプロバイダーを使い、サービスをシングトンとして登録することができます。 +Apricotでは、DIコンテナーに [[https://github.com/thephpleague/container|League/Container]] を使用しています。Apricotのスケルトンでは、League/Container サービスプロバイダー機能利用して、サービス(またはモデなどのクラスも含まれる)を登録することができます。サービスはアリレション全体で共有できます。即ちシングルトンとして利用できます。
- +
-Apricotのスケルトンでは、サービスプロバイタの簡単な例題を提供してます。+
  
 \\ \\
行 78: 行 77:
              ->addArgument('User')              ->addArgument('User')
         ;         ;
- 
         $this->getContainer()->add('User', \App\Models\User::class);         $this->getContainer()->add('User', \App\Models\User::class);
      }      }
行 86: 行 84:
 スケルトンでは[[apricot:usage:ja:model#サービス|サービスのサンプル]]として ''SampleService'' クラスを提供しています。このクラスはコンストラクタに''User'' モデルを与えて作ります。 スケルトンでは[[apricot:usage:ja:model#サービス|サービスのサンプル]]として ''SampleService'' クラスを提供しています。このクラスはコンストラクタに''User'' モデルを与えて作ります。
  
-''SampleService'' クラスをサービスプロバイターに登録するには、コンテナの''add()'' メソッドを使用し、その引数は、エイリアス名、登録するクラス、そしてフラグです。フラグがtrueの場合、このクラスはシングルトンとして動作します。''addArgument()'' メソッドは登録するクラスのコンストラクタに与える引数を定義します。''addArgument()'' メソッドで定義した引数もまたサービスプロバイターに登録しておく必要があります。+''SampleService'' クラスをサービスプロバイターに登録するには、コンテナの''add()'' メソッドを使用し、その引数は、エイリアス名、登録するクラス、そして共有フラグです。共有フラグがtrueの場合、このクラスはシングルトンとして動作します。''addArgument()'' メソッドは登録するクラスのコンストラクタに与える引数を定義します。この引数もまた''add()'' メソッドで登録しておく必要があります。
  
 サービス(またはモデル)をサービスプロバイターに登録する場合は、上例に習って適宜追加して下さい。League/Container のサービスプロバイダーについての詳細は[[https://container.thephpleague.com/3.x/service-providers/|こちら]]をご覧ください。 サービス(またはモデル)をサービスプロバイターに登録する場合は、上例に習って適宜追加して下さい。League/Container のサービスプロバイダーについての詳細は[[https://container.thephpleague.com/3.x/service-providers/|こちら]]をご覧ください。
行 106: 行 104:
 ===== 使用例 ===== ===== 使用例 =====
  
-> TODO +スタブコントローラのindexアクションは、DIコンテナの使用例があります。
- +
-DIコンテナをテストするために、スタブコントローラを以下よう修正します。+
  
-{{fa>folder-open-o}} ** /apricot/app/Controllers **+{{fa>folder-open-o}} ** /your-project/app/Controllers **
 <code php StubController.php> <code php StubController.php>
 public function index(int $no=null) public function index(int $no=null)
行 127: 行 123:
 </code> </code>
  
-  * ''Container::get('user')''ユーザモデルを生成します。 +''Container'' シングルトンの ''get()'' メソッドで、サービスロバイダでシングルンとして登録した ''SampleService'' のインスタンス取得ます。このインスタンスはアプリケーション全体で共有されます。
-  * ユーザ数を表示するためにテンート変数 ''$messages''セットします。+
  
 \\ \\
apricot/usage/ja/provider.1598688594.txt.gz · 最終更新: 2020/08/29 17:09 by y2sunlight