Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:features

差分

このページの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のアプリ部分の ''App\Foundation\Controller'' を継承し、このControllersクラスは、コア部分の ''Apricot\Foundation\BaseController'' を継承しています。コントローラはプロジェクトディレクトリー下の ''App/Controllers'' に配置する必要があります( 名前空間は''\app\Controllers'' です )。+ルーティングによって設定されているエンドポイントがアクセスされ、ミドルウェアによってレスポンスが生成されなかった場合、Apricotはコントローラ@アクションをインボークします。コントローラの全ての具象クラスはApricotのアプリ部分の ''App\Foundation\Controller'' を継承し、このControllersクラスは、コア部分の ''Apricot\Foundation\BaseController'' を継承しています。コントローラはプロジェクトディレクトリー下の ''app/Controllers'' に配置する必要があります( 名前空間は''\App\Controllers'' です )。
  
  
行 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:
 </code> </code>
  
-''<nowiki>$this->transactional()</nowiki>'' はアクショントランザクションを適用するコントローラクラスのメソッドです。上の例では insert、update そして deleteアクショントランザクションを適用しています。+''<nowiki>$this->transactional()</nowiki>'' はアクショントランザクションするコントローラクラスのメソッドです。上の例では insert、update そして deleteアクショントランザクションしています。
  
-Apricotは、アクションを呼び出す前にトランザクションを開始し、アクションが例外をスローしなかった場合、トランザクションが成功したものとみなして、そのトランザクションをコミットします。一方、アクションが ''ApplicationException'' 例外をスローした場合、Apricotは、それをキャッチしてエラーログを出力して、アクション代わりに前画面に戻るリダイレクトレスポンスをします。+Apricotは、アクションを呼び出す前にトランザクションを開始し、アクションが例外をスローしなかった場合、トランザクションが成功したものとみなして、そのトランザクションをコミットします。一方、アクションが ''ApplicationException'' 例外をスローした場合、Apricotは、それをキャッチしてエラーログを出力して、アクション代わって前画面に戻るリダイレクトレスポンスを生成します。
  
 \\ \\
行 476: 行 476:
 ==== モデル ==== ==== モデル ====
  
-Apricotの個々のモデルクラスは、''\App\Foundation\Model'' から継承して作りますが、このクラスはカスタマイズを前提としています。初期に実装されている ''Model'' クラスは ORMに [[https://github.com/j4mie/idiorm|Idiorm]] を使用し、以下のメソッドを実装しています。+Apricotの個々のモデルクラスは、''\App\Foundation\Model'' から継承して作りますが、このクラスはカスタマイズされることを前提としています。初期に実装されている ''Model'' クラスは ORMに [[https://github.com/j4mie/idiorm|Idiorm]] を使用し、以下のメソッドを実装しています。
  
   * findAll() --- 全件検索   * findAll() --- 全件検索
行 491: 行 491:
   * version_no (integer) --- バージョンNo(楽観的ロックで使用)   * version_no (integer) --- バージョンNo(楽観的ロックで使用)
  
-このように、初期実装されている ''Model'' クラスには幾つかの前提があるので、アプリケーションに合わせてカスタマイズまたは再作成して下さい。また、ORMも [[https://github.com/j4mie/idiorm|Idiorm]] 以外のものを使うことができます。+このように、初期実装されている ''Model'' クラスには幾つかの前提があるので、アプリケーションに合わせてカスタマイズまたは再作成した方が良かもしれません。また、ORMも [[https://github.com/j4mie/idiorm|Idiorm]] 以外のものを使うことができます。
  
 以下は、初期実装されている ''Model'' クラスを継承したユーザモデルの例です。個々のモデルクラスは、''\App\Models'' の下に配置されます。 以下は、初期実装されている ''Model'' クラスを継承したユーザモデルの例です。個々のモデルクラスは、''\App\Models'' の下に配置されます。
apricot/usage/ja/features.1600389897.txt.gz · 最終更新: 2020/09/18 09:44 by y2sunlight