このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
apricot:usage:ja:http [2020/08/03 11:10] tanaka [Input] |
apricot:usage:ja:http [2020/08/15 17:57] y2sunlight [Input] |
||
---|---|---|---|
行 6: | 行 6: | ||
--- // | --- // | ||
- | [[apricot: | + | [[apricot: |
目次 | 目次 | ||
+ | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
+ | * [[apricot: | ||
* Apricot リクエストとレスポンス | * Apricot リクエストとレスポンス | ||
* [[apricot: | * [[apricot: | ||
行 16: | 行 18: | ||
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
- | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
行 22: | 行 23: | ||
===== リクエスト ===== | ===== リクエスト ===== | ||
- | ==== Input ==== | ||
- | Inputクラスはフォームの送信データを取得するクラスです。Inputクラスと後述の[[# | + | Apricotのリクエストクラスは、PHPのスーパーグローバル変数を個別にカプセル化したシングルトンです。リクエスト取得用に以下のシングルトンがあります: |
- | Inputクラスは、上のSimpleInputクラスをシングルトンにしたもので、SimpleInputのメソッドが全て使用できます。初期化時にHTTPメソッドによってGET変数またはPOST変数の何れかを使用してクラスを生成します。Inputクラスは、フォームの入力データを取得する場合に使用します。 | + | * Input --- フォーム送信データ(GET変数またはPOST変数:methodに依存) |
+ | * QueryString --- クエリ文字列(GET変数) | ||
+ | * Session --- SESSION変数 | ||
+ | * Flash --- 1回限り有効なSESSION変数 | ||
+ | * Cookie --- COOKIE変数 | ||
+ | |||
+ | これらはシングルトンなので、アプリケーションのどこからでもリクエストを取得することができます。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Input ==== | ||
+ | |||
+ | Inputクラスはフォームの送信データを取得するシングルトンで、methodに従って、$_GETまたは$_POSTから生成されます。Inputクラスは後述のQueryStringクラスは同じく '' | ||
使用法: ** Input:: | 使用法: ** Input:: | ||
行 38: | 行 50: | ||
|set(string $key, string $vale)|入力データの設定| | |set(string $key, string $vale)|入力データの設定| | ||
|remove(string $key)|入力データの削除| | |remove(string $key)|入力データの削除| | ||
+ | |||
+ | 以下は、典型的な使用例です: | ||
+ | |||
+ | <code php> | ||
+ | public function insert() | ||
+ | { | ||
+ | $inputs = Input:: | ||
+ | |||
+ | // Do something. | ||
+ | // ... | ||
+ | } | ||
+ | </ | ||
\\ | \\ | ||
==== QueryString ==== | ==== QueryString ==== | ||
- | >TODO | + | |
+ | QueryStringクラスはクエリ文字列を取得する為のシングルトンです。このクラスは'' | ||
+ | |||
+ | 使用法: ** QueryString:: | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |bool has(string $key)|キー指定よる入力データの存在確認| | ||
+ | |string get(string $key, string $default = null)|キー指定よる入力データの取得| | ||
+ | |array all()|全ての入力データの取得| | ||
+ | |array only(array< | ||
+ | |array except(array< | ||
+ | |set(string $key, string $vale)|入力データの設定| | ||
+ | |remove(string $key)|入力データの削除| | ||
\\ | \\ | ||
==== Session ==== | ==== Session ==== | ||
- | >TODO | + | |
+ | Sessionクラスはセッション変数を設定及び取得をするシングルトンで、'' | ||
+ | |||
+ | 使用法: ** Session:: | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |start()|セッションの開始| | ||
+ | |isStarted(): | ||
+ | |has(string $key): | ||
+ | |get(string $key, $default = null)|セッション変数の取得| | ||
+ | |set(string $key, $value)|セッション変数の設定| | ||
+ | |remove(string $key)|セッション変数の削除| | ||
+ | |clear()|セッション変数のクリア| | ||
+ | |destroy()|セッションの破棄| | ||
+ | |flash(): | ||
+ | |||
+ | 使用例: | ||
+ | <code php> | ||
+ | TODO: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === 設定ファイル === | ||
+ | |||
+ | セッションには以下の設定ファイルが存在します。 | ||
+ | |||
+ | {{fa> | ||
+ | <code php session.setting.php> | ||
+ | <?php | ||
+ | /** | ||
+ | * This file contains session settings. | ||
+ | */ | ||
+ | return | ||
+ | [ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ], | ||
+ | ]; | ||
+ | </ | ||
+ | |||
+ | * name --- セッション名(初期設定値は環境変数APP_SECRETを使って設定します) | ||
+ | * ini.gc_maxlifetime --- サーバに保存されるセッション変数の有効期間(デフォルト値は1440[秒]) | ||
+ | * ini.gc_probability --- [[https:// | ||
+ | * ini.gc_divisor --- [[https:// | ||
+ | * ini.cookie_lifetime --- セッションクッキーの有効期間(デフォルト0ではブラウザを閉じたらセッションは破棄されます) | ||
\\ | \\ | ||
==== Flash ==== | ==== Flash ==== | ||
- | >TODO | + | |
+ | フラッシュとは、セッション内で一回限りだけ有効な[[# | ||
+ | |||
+ | 使用法: ** Flash:: | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |has(string $key): | ||
+ | |get(string $key, $default = null)|フラッシュ変数の取得| | ||
+ | |set(string $key, $value)|フラッシュ変数の設定| | ||
+ | |remove(string $key)|フラッシュ変数の削除| | ||
+ | |clear()|フラッシュ変数のクリア| | ||
+ | |||
+ | 使用例: | ||
+ | <code php> | ||
+ | TODO: | ||
+ | </ | ||
\\ | \\ | ||
==== Cookie ==== | ==== Cookie ==== | ||
- | >TODO | + | |
+ | Cookieクラスはクッキーの設定及び取得を行うシングルトンで、'' | ||
+ | |||
+ | 使用法: ** Cookie:: | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |has(string $key): | ||
+ | |get(string $key, $default = null)|クッキーの取得| | ||
+ | |set(string $key, string $value, int $expires_sec=0): | ||
+ | |forever(string $key, string $value): | ||
+ | |remove(string $key)|クッキーの削除| | ||
+ | |||
+ | 使用例: | ||
+ | <code php> | ||
+ | TODO: | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === 設定ファイル === | ||
+ | |||
+ | クッキーには以下の設定ファイルが存在します。 | ||
+ | |||
+ | {{fa> | ||
+ | <code php cookie.setting.php> | ||
+ | <?php | ||
+ | /** | ||
+ | * This file contains cookie settings. | ||
+ | */ | ||
+ | return | ||
+ | [ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ]; | ||
+ | </ | ||
+ | |||
+ | * path --- ドメイン上のクッキーが有効なパス(デフォルト値はカレントパス: | ||
+ | * domain--- クッキーが有効なドメイン(デフォルト値はカレントURLのドメイン) | ||
+ | * secure--- TRUEを設定すると、セキュアな接続が存在する場合にのみクッキーを設定します | ||
+ | * httponly--- TRUEを設定すると、HTTPを通してのみクッキーを設定します | ||
+ | |||
+ | > 設定値の詳細は、PHPマニュアルの[[https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== ボイラープレート ==== | ||
+ | |||
+ | リクエスト取得用のボイラープレートには以下の関数があります。input()からcookie()までは、それぞれのリクエスト変数を取得する関数で、HTMLテンプレートでよく使われるます。inputLabels()はInputクラスからバリデーションの項目名を取得するのに便利な関数です。 | ||
+ | |||
+ | ^ヘルパー関数^機能^ | ||
+ | |input\\ (string $key, $default=null): | ||
+ | |queryString\\ (string $key, $default=null): | ||
+ | |session\\ (string $key, $default=null): | ||
+ | |flash\\ (string $key, $default=null): | ||
+ | |cookie\\ (string $key, $default=null): | ||
+ | |inputLabels\\ (string $message_key): | ||
\\ | \\ | ||
===== レスポンス ===== | ===== レスポンス ===== | ||
- | ==== RenderResponse | + | ==== Responseクラス |
- | >TODO | + | |
+ | Responseクラスはレスポンスのベースクラスで、その目的はHTMLヘッダーとフラッシュデータの管理です。後述の RenderResponse(レンダリング用) と RedirectResponse(リダイレクト用) はResponseクラスから派生します。Responseクラスは以下のメソッドを持ちます。 | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |addHeader($headers): | ||
+ | |hasFlash(string $key): | ||
+ | |addFlash(string $key, $value): | ||
+ | |commit(int $response_code=null)|レスポンスの確定| | ||
\\ | \\ | ||
- | ==== RedirectResponse ==== | + | ==== RenderResponseクラス ==== |
- | >TODO | + | |
+ | RenderResponseクラスはResponseクラスから派生します。HTMLレンダリングを行うレスポンス用のクラスで、以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。 | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |< | ||
+ | |setHtml(string $html=null): | ||
+ | |commit(int $response_code=null)|レスポンスの確定| | ||
+ | |||
+ | アプリケーションでは、直接RenderResponseクラスを使うのではなく、後述する render() 関数を使用します。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== RedirectResponseクラス | ||
+ | |||
+ | RedirectResponseクラスはResponseクラスから派生したリダイレクト用のクラスです。リダイレクトではフラッシュデータを使ってリダイレクト先のページにデータを送ることが多いので、フラッシュ用のメソッドが追加されています。RedirectResponseクラスは以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。 | ||
+ | |||
+ | ^メソッド^機能^ | ||
+ | |<nowiki>__</ | ||
+ | |with(string $key, $value): | ||
+ | |withInputs(): | ||
+ | |withErrors(ErrorBag $errorBag): | ||
+ | |withOldErrors(): | ||
+ | |||
+ | TODO: | ||
+ | 以下は、レスポンスで使用するフラッシュデータのキーとその内容です。特に _old_inputs と errors はHTMLテンプレートで良く使用されます。 | ||
+ | |||
+ | ^フラッシュキー^内容^ | ||
+ | |_old_inputs|前回の入力データ| | ||
+ | |_old_path|前回のURIパス| | ||
+ | |errors|エラーバッグ| | ||
+ | |||
+ | アプリケーションでは、直接RedirectResponseクラスを使うのではなく、後述する redirect() 関数を使用します。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== ボイラープレート ==== | ||
+ | |||
+ | レスポンス処理用のボイラープレートには以下の関数があります。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。 | ||
+ | |||
+ | ^ヘルパー関数^機能^ | ||
+ | |render\\ (string $view=null, array $variables=[])\\ : | ||
+ | |redirect\\ (string $url)\\ : | ||
+ | |old\\ (string $key, $default = null)|キーを指定して前回の入力値を取得します| | ||
+ | |back(): | ||
+ | |errors(): | ||
+ | |||
+ | 使用例: | ||
+ | <code php> | ||
+ | TODO: | ||
+ | </ | ||
\\ | \\ | ||