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