このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
apricot:usage:ja:features [2020/09/18 09:44] y2sunlight [Apricot のアプリ(App)部分] |
apricot:usage:ja:features [2020/09/22 16:37] (現在) y2sunlight [モデル] |
||
---|---|---|---|
行 68: | 行 68: | ||
==== Apricot のアプリ(App)部分 ==== | ==== Apricot のアプリ(App)部分 ==== | ||
- | アプリ部分はコアの機能を使って実装されます。アプリ部分の実装は、コントローラとミドルウェアの具象化が主な作業になります。これらの基底クラスは、コア部分に存在します。コントローラは、クライアントからのリクエストを処理してレスポンスを生成する個別のクラスです。ミドルウェアも個別のクラスですが、これはコントローラによって形成されるアプリケーション層からは分離された存在です。両者は共にリクエストを処理して、最終的に何れかのコンポーネントがレスポンスを生成します。 | + | アプリ部分はコアの機能を使って実装されます。アプリ部分の実装は、コントローラとミドルウェアの具象化が主な作業になります。これらの基底クラスは、コア部分に存在します。コントローラは、クライアントからの特定のリクエストを処理してレスポンスを生成するクラスです。ミドルウェアは一般に全てのまたは限定的なリクエストを幅広く処理するクラスで、コントローラによって形成されるアプリケーション層からは分離された存在です。両者は共にリクエストを処理して、最終的に何れかのクラスがレスポンスを生成します。 |
Apricotでは、これらのコンポーネントがリクエストを処理する過程で使用するデータモデルに関連するコンポーネントをアプリ部分に配置します。データモデルの基底クラスはApricot独自で実装されていますが、他のコンポーネントには、以下の外部ライブラリーを使用しています。 | Apricotでは、これらのコンポーネントがリクエストを処理する過程で使用するデータモデルに関連するコンポーネントをアプリ部分に配置します。データモデルの基底クラスはApricot独自で実装されていますが、他のコンポーネントには、以下の外部ライブラリーを使用しています。 | ||
行 88: | 行 88: | ||
===== ボイラープレートとシングルトン ===== | ===== ボイラープレートとシングルトン ===== | ||
- | Apricotでは、コントローラ、ミドルウェアそしてテンプレートの中でフレームワークを呼び出す簡便な方法として、ボイラープレートとシングルトンを使用します。 | + | Apricotでは、コントローラ、ミドルウェアそしてテンプレートの中でフレームワークを呼び出す簡便な方法として、ボイラープレートとシングルトンを提供しています。 |
- | ボイラープレートは良く使うフレームワークのコードパターンを関数として使用できるようにしたヘルパーの集まりです。例えば: | + | ボイラープレートとは良く使うフレームワークのコードパターンを関数として使用できるようにしたヘルパー関数です。例えば: |
<code php> | <code php> | ||
行 116: | 行 116: | ||
===== Apricotの概要 ===== | ===== Apricotの概要 ===== | ||
- | Apricotの概要を知る為に、クライアントがリクエストを行ってからApricotがレスポンスを返すまでを、ユーザ登録アプリケーションを例に説明します。 | + | Apricotの概要を知る為に、クライアントのリクエストを受け取ってからApricotがレスポンスを返すまでを、ユーザ登録アプリケーションを例に説明します。 |
\\ | \\ | ||
行 235: | 行 235: | ||
==== コントローラ ==== | ==== コントローラ ==== | ||
- | ルーティングによって設定されているエンドポイントがアクセスされ、ミドルウェアによってレスポンスが生成されなかった場合、Apricotはコントローラ@アクションをインボークします。コントローラの全ての具象クラスはApricotのアプリ部分の '' | + | ルーティングによって設定されているエンドポイントがアクセスされ、ミドルウェアによってレスポンスが生成されなかった場合、Apricotはコントローラ@アクションをインボークします。コントローラの全ての具象クラスはApricotのアプリ部分の '' |
行 293: | 行 293: | ||
Auto Wiring 機能で使用する引数には、一般的にモデルクラスやサービスクラスを指定します。ここでは、ユーザモデルをコンストラクター引数に指定し、それをメンバ変数に格納しています。 | Auto Wiring 機能で使用する引数には、一般的にモデルクラスやサービスクラスを指定します。ここでは、ユーザモデルをコンストラクター引数に指定し、それをメンバ変数に格納しています。 | ||
- | また、コンストラクタではコントローラのアクションに[[# | + | また、上のコンストラクタではコントローラのアクションに[[# |
\\ | \\ | ||
行 299: | 行 299: | ||
==== HTTP リクエストの取得 ==== | ==== HTTP リクエストの取得 ==== | ||
- | 通常のフレームワークでは、CGIやPHP環境からアプリケーションに到達したすべてのデータ($_SERVER、$_GET、$_POST、$_FILES、$_SESSIONなどの変数)を1つのリクエストクラス(またはインターフェース)にカプセル化します。リクエストクラスでは、これらのデータに加え、フラッシュと呼ばれる、一度だけ保存されるセッション変数(次の画面の遷移のときまで保存される変数)もサポートされています。 | + | 通常のフレームワークでは、CGIやPHP環境からアプリケーションに到達したすべてのデータ($_SERVER、$_GET、$_POST、$_FILES、$_SESSIONなどの変数)を1つのリクエストクラスにカプセル化します。リクエストクラスでは、これらのデータに加え、フラッシュと呼ばれる、一度だけ保存されるセッション変数(次の画面の遷移のときまで保存される変数)もサポートされています。 |
Apricotにはリクエストクラスがありません。その代わりに、個々の変数をカプセル化したクラスのシングルトンを持っています。リクエスト取得用に以下のシングルトンがあります: | Apricotにはリクエストクラスがありません。その代わりに、個々の変数をカプセル化したクラスのシングルトンを持っています。リクエスト取得用に以下のシングルトンがあります: | ||
行 468: | 行 468: | ||
</ | </ | ||
- | ''< | + | ''< |
- | Apricotは、アクションを呼び出す前にトランザクションを開始し、アクションが例外をスローしなかった場合、トランザクションが成功したものとみなして、そのトランザクションをコミットします。一方、アクションが '' | + | Apricotは、アクションを呼び出す前にトランザクションを開始し、アクションが例外をスローしなかった場合、トランザクションが成功したものとみなして、そのトランザクションをコミットします。一方、アクションが '' |
\\ | \\ | ||
行 476: | 行 476: | ||
==== モデル ==== | ==== モデル ==== | ||
- | Apricotの個々のモデルクラスは、'' | + | Apricotの個々のモデルクラスは、'' |
* findAll() --- 全件検索 | * findAll() --- 全件検索 | ||
行 491: | 行 491: | ||
* version_no (integer) --- バージョンNo(楽観的ロックで使用) | * version_no (integer) --- バージョンNo(楽観的ロックで使用) | ||
- | このように、初期実装されている '' | + | このように、初期実装されている '' |
以下は、初期実装されている '' | 以下は、初期実装されている '' |