このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
apricot:ext:di-container [2020/05/26 15:48] y2sunlight [サービスプロバイター] |
apricot:ext:di-container [2020/05/26 16:42] (現在) y2sunlight [Providerクラス] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
- | ----- | ||
- | |||
====== Apricot DIコンテナー ====== | ====== Apricot DIコンテナー ====== | ||
--- // | --- // | ||
行 157: | 行 153: | ||
League/ | League/ | ||
- | - League/ | + | - League/ |
- League/ | - League/ | ||
行 165: | 行 161: | ||
==== Providerクラス ==== | ==== Providerクラス ==== | ||
- | > TODO: | + | |
+ | 以下に、League/ | ||
{{fa> | {{fa> | ||
行 206: | 行 203: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | このクラスは、名前空間Appの直下に存在し、アプリケーションのモデル及びサービスのマップを提供します。現版のApricotでは、モデルはユーザモデル( User )だけで、サービスについては存在しません。モデルやサービスを追加する場合は、上例に習って適宜追加して下さい。 | ||
+ | |||
+ | 現版のApricotでは、サービスは存在しませんが、サービス用として以下のフォルダが予約されています。 | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | 尚、League/ | ||
\\ | \\ | ||
- | ==== Containerクラス ==== | + | ==== App\Foundation\Containerクラス ==== |
- | > TODO: | + | |
- | > TODO: PSR-11についても書く | + | App\Foundation\Containerクラスは、\League\Container\Container クラスを生成し、Apricotのサービスプロバイダー(Provider)を登録したクラスで、シングルトンとして動作します。 |
使用法: ** Container:: | 使用法: ** Container:: | ||
^メソッド^機能^ | ^メソッド^機能^ | ||
- | |mixed get(string $id)|Finds an entry of the container by its identifier and returns it.| | + | |mixed get(string $id)|識別子idでコンテナのエントリを検索して返します。| |
- | |bool has(string $id)|Returns | + | |bool has(string $id)|コンテナが指定された識別子idのエントリを返すことができる場合はtrueを返します。| |
{{fa> | {{fa> | ||
行 249: | 行 256: | ||
</ | </ | ||
- | ==== テスト実行 ==== | + | \\ |
- | > TODO: StabControllerの例 | + | |
+ | ==== サービスコンテナの使用例 ==== | ||
+ | |||
+ | === スタブコントローラ === | ||
+ | |||
+ | サービスコンテナをテストするために、スタブコントローラを以下のように修正します。 | ||
+ | |||
+ | {{fa> | ||
+ | <code php StubController.php> | ||
+ | namespace App\Controllers; | ||
+ | |||
+ | use App\Foundation\Container; | ||
+ | use App\Foundation\Controller; | ||
+ | |||
+ | /** | ||
+ | * Stubコントローラ | ||
+ | */ | ||
+ | class StubController extends Controller | ||
+ | { | ||
+ | /** | ||
+ | * Stub Page | ||
+ | * @return \Core\Foundation\Response | ||
+ | */ | ||
+ | public function index(int $no=null) | ||
+ | { | ||
+ | $title = "Stub {$no}"; | ||
+ | |||
+ | /* | ||
+ | * Example for Container | ||
+ | * @var \App\Models\User $user | ||
+ | */ | ||
+ | $user = Container:: | ||
+ | $userCount = count($user-> | ||
+ | $messages[] = " | ||
+ | |||
+ | return render(' | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * '' | ||
+ | * ユーザモデルの '' | ||
+ | * ユーザ数を表示するために、テンプレート変数 '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === テスト実行 | ||
+ | |||
+ | Apricotのホーム画面を表示して、[Menu2]をクリックして下さい。 | ||
+ | |||
+ | [{{apricot: | ||
+ | ■ 画面にユーザ数が表示されます | ||
+ | |||
+ | <code> | ||
+ | Number of registered users : 2 | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
\\ | \\ | ||