このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| apricot:usage:ja:model [2020/08/21 17:42] y2sunlight | apricot:usage:ja:model [2020/09/03 13:45] (現在) y2sunlight [Apricot モデルとサービス] | ||
|---|---|---|---|
| 行 15: | 行 15: | ||
| * [[apricot: | * [[apricot: | ||
| * [[apricot: | * [[apricot: | ||
| + | * [[apricot: | ||
| * [[apricot: | * [[apricot: | ||
| + | * [[apricot: | ||
| * [[apricot: | * [[apricot: | ||
| 行 22: | 行 24: | ||
| モデルはデータベース上のテーブルと1対1に対応したクラスで、データベースからデータを取得または設定するためのメソッドを持っています。モデルのベースクラスは[[https:// | モデルはデータベース上のテーブルと1対1に対応したクラスで、データベースからデータを取得または設定するためのメソッドを持っています。モデルのベースクラスは[[https:// | ||
| - | Apricotは比較的小規模なアプリケーション開発をターゲットにしているので、コントローラとモデルによってアプリケーションの作成が可能であると仮定しています。しかしながら、2つ以上のモデルを操作するような少し複雑なトランザクションが必要な場合は、それをサービスとして実装する必要があるかもしれません。現状のApricotではサービスの実装はアプリケーションの問題であるとする立場でなので、ここではサービスの実装に関する若干のヒントを示すに留めます。 | + | Apricotは比較的小規模なアプリケーション開発をターゲットにしているので、コントローラとモデルによってアプリケーションの作成が可能であると仮定しています。しかしながら、2つ以上のモデルを操作するような少し複雑なトランザクションが必要な場合は、それをサービスとして実装する必要があるかもしれません。現状のApricotではサービスの実装はアプリケーションの問題であるとする立場でなので、本章では、サービスの実装に関する若干のヒントを示すにだけに留めます。 | 
| \\ | \\ | ||
| 行 124: | 行 126: | ||
| </ | </ | ||
| - | 新しいORMオブジェクトにはモデルのフィールドがありません。モデルに初期値を設定するには以下のようにします。 | + | 上の例では、新しいORMオブジェクトにはモデルのフィールドはありません。モデルに初期値を設定するには以下のようにします。 | 
| <code php> | <code php> | ||
| 行 143: | 行 145: | ||
| === update() === | === update() === | ||
| - | 指定されたモデルデータでテーブルを更新します。このメソッドはORMオブジェクトを返します。レコードが存在しない時、'' | + | 指定されたモデルデータでテーブルを更新します。このメソッドはORMオブジェクトを返します。レコードが存在しない時、'' | 
| <code php> | <code php> | ||
| 行 188: | 行 190: | ||
| 以下はもっとも簡単なModelの継承の例です。Modelを継承するだけで、Modelクラスのメソッドが利用でき、簡単なモデルなら直ぐにアクションの実装に取り掛かれます。 | 以下はもっとも簡単なModelの継承の例です。Modelを継承するだけで、Modelクラスのメソッドが利用でき、簡単なモデルなら直ぐにアクションの実装に取り掛かれます。 | ||
| + | {{fa> | ||
| <code php User.php> | <code php User.php> | ||
| <?php | <?php | ||
| 行 252: | 行 255: | ||
| ===== サービス ===== | ===== サービス ===== | ||
| - | Apricotではサービスの実装に関する具体的で明確な指針を提供してはいませんが、1つの例題を提供しています。この例題は、''/ | + | Apricotではサービスの実装に関する具体的で明確な指針を提供してはいませんが、その代わりに1つの例題を提供しています。この例題は、''/ | 
| - | <code php> | + | {{fa> | 
| + | < | ||
| <?php | <?php | ||
| namespace App\Services; | namespace App\Services; | ||
| 行 287: | 行 291: | ||
| </ | </ | ||
| + | サービスの構造は[[apricot: | ||
| - | サービスの配置場所は | + | これらの問題を解決する為に、Apricotのコアが使用している [[https:// | 
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | が、Apricotのコアが使用している [[https:// | + | |
| - | + | ||
| - | + | ||
| - | これらのツールを利用してアプリケーション | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | 詳しくは [[apricot: | + | |
| - | ApricotではDIコンテナに [[https:// | + | Apricotでは League/ | 
| + | === Auto Wiring === | ||
| + | Auto Wiring とは、コンストラクター引数の型ヒントを調べることにより、オブジェクトとそのすべての依存関係を再帰的に自動的に解決する機能です。これによってコントローラーにモデルやサービスのコンストラクタインジェクションが実現できます。詳しくは「[[apricot: | ||
| + | === サービスプロバイダー === | ||
| + | サービスプロバイダーを利用して、サービスをシングルトンとしてアプリケーションに登録することができます。詳しくは、「[[apricot: | ||
| \\ | \\ | ||