Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:http

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
apricot:usage:ja:http [2020/07/29 13:21]
tanaka 作成
apricot:usage:ja:http [2020/08/15 17:57] (現在)
y2sunlight [Input]
ライン 6: ライン 6:
  --- //​[[http://​www.y2sunlight.com|y2sunlight]] 2020-07-29//​  --- //​[[http://​www.y2sunlight.com|y2sunlight]] 2020-07-29//​
  
-[[apricot:​usage:​ja|Apricotの使用法 ​に戻る]]+[[apricot:​usage:​ja|Apricot ​ドキュメント ​に戻る]]
  
 目次 目次
  
 +  * [[apricot:​usage:​ja:​features|Apricot 特徴と概要]]
   * [[apricot:​usage:​ja:​config|Apricot 配置と構成]]   * [[apricot:​usage:​ja:​config|Apricot 配置と構成]]
 +  * [[apricot:​usage:​ja:​errors-logging|Apricot ログとエラー処理]]
   * Apricot リクエストとレスポンス   * Apricot リクエストとレスポンス
   * [[apricot:​usage:​ja:​frontend|Apricot フロントエンド]]   * [[apricot:​usage:​ja:​frontend|Apricot フロントエンド]]
ライン 16: ライン 18:
   * [[apricot:​usage:​ja:​middleware|Apricot ミドルウェア]]   * [[apricot:​usage:​ja:​middleware|Apricot ミドルウェア]]
   * [[apricot:​usage:​ja:​controller|Apricot コントローラ]]   * [[apricot:​usage:​ja:​controller|Apricot コントローラ]]
-  * [[apricot:​usage:​ja:​errors-logging|Apricot ログとエラー処理]] 
   * [[apricot:​usage:​ja:​utility|Apricot ユーティリティ]]   * [[apricot:​usage:​ja:​utility|Apricot ユーティリティ]]
  
ライン 22: ライン 23:
  
 ===== リクエスト ===== ===== リクエスト =====
 +
 +Apricotのリクエストクラスは、PHPのスーパーグローバル変数を個別にカプセル化したシングルトンです。リクエスト取得用に以下のシングルトンがあります:
 +
 +  * Input --- フォーム送信データ(GET変数またはPOST変数:methodに依存)
 +  * QueryString --- クエリ文字列(GET変数)
 +  * Session --- SESSION変数
 +  * Flash --- 1回限り有効なSESSION変数
 +  * Cookie --- COOKIE変数
 +
 +これらはシングルトンなので、アプリケーションのどこからでもリクエストを取得することができます。
 +
 +\\
 +
 ==== Input ==== ==== Input ====
->TODO+ 
 +Inputクラスはフォームの送信データを取得するシングルトンで、methodに従って、$_GETまたは$_POSTから生成されます。Inputクラスは後述のQueryStringクラスは同じく ''​Apricot\Foundation\SimpleInput''​ クラスをシングルトンにしたものです。 
 + 
 +使用法: ** Input::​{メソッド} ** 
 + 
 +^メソッド^機能^ 
 +|bool has(string $key)|キー指定よる入力データの存在確認| 
 +|string get(string $key, string $default = null)|キー指定よる入力データの取得| 
 +|array all()|全ての入力データの取得| 
 +|array only(array<​nowiki>​|</​nowiki>​mixed $keys)|必要入力データのみの取得| 
 +|array except(array<​nowiki>​|</​nowiki>​mixed $keys)|不要なものを除く入力データの取得| 
 +|set(string $key, string $vale)|入力データの設定| 
 +|remove(string $key)|入力データの削除| 
 + 
 +以下は、典型的な使用例です: 
 + 
 +<code php> 
 +public function insert() 
 +
 +    $inputs = Input::​all();​ 
 + 
 +    // Do something. 
 +    // ... 
 +
 +</code>
  
 \\ \\
  
 ==== QueryString ==== ==== QueryString ====
->TODO+ 
 +QueryStringクラスはクエリ文字列を取得する為のシングルトンです。このクラスは''​Apricot\Foundation\SimpleInput''​ クラスをシングルトンにしたもので、$_GETから生成します。 
 + 
 +使用法: ** QueryString::​{メソッド} ** 
 + 
 +^メソッド^機能^ 
 +|bool has(string $key)|キー指定よる入力データの存在確認| 
 +|string get(string $key, string $default = null)|キー指定よる入力データの取得| 
 +|array all()|全ての入力データの取得| 
 +|array only(array<​nowiki>|</​nowiki>​mixed $keys)|必要入力データのみの取得| 
 +|array except(array<​nowiki>​|</​nowiki>​mixed $keys)|不要なものを除く入力データの取得| 
 +|set(string $key, string $vale)|入力データの設定| 
 +|remove(string $key)|入力データの削除|
  
 \\ \\
  
 ==== Session ==== ==== Session ====
->TODO+ 
 +Sessionクラスはセッション変数を設定及び取得をするシングルトンで、''​Apricot\Foundation\SimpleSession''​ クラスから作ります。Sessionシングルトン後述するフラッシュデータを包含しています。 
 + 
 +使用法: ** Session::​{メソッド} ** 
 + 
 +^メソッド^機能^ 
 +|start()|セッションの開始| 
 +|isStarted():​bool|セッションが開始されているか否かの判定| 
 +|has(string $key):​bool|セッション変数の存在確認| 
 +|get(string $key, $default = null)|セッション変数の取得| 
 +|set(string $key, $value)|セッション変数の設定| 
 +|remove(string $key)|セッション変数の削除| 
 +|clear()|セッション変数のクリア| 
 +|destroy()|セッションの破棄| 
 +|flash():​SimpleFlash|フラッシュデータの取得| 
 + 
 +使用例: 
 +<code php> 
 +TODO
 +</​code>​ 
 + 
 +\\ 
 + 
 +=== 設定ファイル === 
 + 
 +セッションには以下の設定ファイルが存在します。 
 + 
 +{{fa>​folder-open-o}} ** {your-project}/​config/​setting ** 
 +<code php session.setting.php>​ 
 +<?php 
 +/** 
 + * This file contains session settings. 
 + */ 
 +return 
 +
 +    '​name'​ => '​SID'​.substr(md5(env('​APP_SECRET',​ env('​APP_NAME'​))),​0,​16),​ 
 +    '​ini'​ =>[ 
 +        '​gc_maxlifetime'​ => null,   /* default: 1440[sec] */ 
 +        '​gc_probability'​ => null,   /* default: 1         */ 
 +        '​gc_divisor'​ => null,       /* default: 100       */ 
 +        '​cookie_lifetime'​ => null,  /* default: 0[sec] ​   */ 
 +    ], 
 +]; 
 +</​code>​ 
 + 
 +  * name --- セッション名(初期設定値は環境変数APP_SECRETを使って設定します) 
 +  * ini.gc_maxlifetime --- サーバに保存されるセッション変数の有効期間(デフォルト値は1440[秒]) 
 +  * ini.gc_probability --- [[https://​www.php.net/​manual/​ja/​session.configuration.php#​ini.session.gc-probability|PHPのマニュアル]]を参照して下さい(既定値は1) 
 +  * ini.gc_divisor ---  [[https://​www.php.net/​manual/​ja/​session.configuration.php#​ini.session.gc-divisor|PHPのマニュアル]]を参照して下さい(デフォルト値は100) 
 +  * ini.cookie_lifetime --- セッションクッキーの有効期間(デフォルト0ではブラウザを閉じたらセッションは破棄されます)
  
 \\ \\
  
 ==== Flash ==== ==== Flash ====
->TODO+ 
 +フラッシュとは、セッション内で一回限りだけ有効な[[#​Session|セッション]]変数(次の画面の遷移のときまで保存される変数)のことです。Flashクラスはフラッシュ変数の設定及び取得を行うシングルトンで、''​Apricot\Foundation\SimpleFlash''​ クラスから作ります。 
 + 
 +使用法: ** Flash::​{メソッド} ** 
 + 
 +^メソッド^機能^ 
 +|has(string $key):​bool|フラッシュ変数の存在確認| 
 +|get(string $key, $default = null)|フラッシュ変数の取得| 
 +|set(string $key, $value)|フラッシュ変数の設定| 
 +|remove(string $key)|フラッシュ変数の削除| 
 +|clear()|フラッシュ変数のクリア| 
 + 
 +使用例: 
 +<code php> 
 +TODO
 +</​code>​
  
 \\ \\
  
 ==== Cookie ==== ==== Cookie ====
->TODO+ 
 +Cookieクラスはクッキーの設定及び取得を行うシングルトンで、''​Apricot\Foundation\SimpleCookie''​ クラスを使って実装します。 
 + 
 +使用法: ** Cookie::​{メソッド} ** 
 + 
 +^メソッド^機能^ 
 +|has(string $key):​bool|クッキーの存在確認| 
 +|get(string $key, $default = null)|クッキーの取得| 
 +|set(string $key, string $value, int $expires_sec=0):​bool|クッキーの設定(有効期限付き)| 
 +|forever(string $key, string $value):​bool|クッキーの設定(永続的)| 
 +|remove(string $key)|クッキーの削除| 
 + 
 +使用例: 
 +<code php> 
 +TODO
 +</​code>​ 
 + 
 +\\ 
 + 
 +=== 設定ファイル === 
 + 
 +クッキーには以下の設定ファイルが存在します。 
 + 
 +{{fa>​folder-open-o}} **  {your-project}/​config/​setting ** 
 +<code php cookie.setting.php>​ 
 +<?php 
 +/** 
 + * This file contains cookie settings. 
 + */ 
 +return 
 +
 +    '​path'​ => '',​ 
 +    '​domain'​ => '',​ 
 +    '​secure'​ => FALSE, 
 +    '​httponly'​ => FALSE, 
 +]; 
 +</​code>​ 
 + 
 +  * path --- ドメイン上のクッキーが有効なパス(デフォルト値はカレントパス:​即ち公開パスpublic) 
 +  * domain--- クッキーが有効なドメイン(デフォルト値はカレントURLのドメイン) 
 +  * secure--- TRUEを設定すると、セキュアな接続が存在する場合にのみクッキーを設定します 
 +  * httponly--- TRUEを設定すると、HTTPを通してのみクッキーを設定します 
 + 
 +> 設定値の詳細は、PHPマニュアルの[[https://​www.php.net/​manual/​ja/​function.setcookie.php|setcookie]]を参照して下さい。 
 + 
 +\\ 
 + 
 +==== ボイラープレート ==== 
 + 
 +リクエスト取得用のボイラープレートには以下の関数があります。input()からcookie()までは、それぞれのリクエスト変数を取得する関数で、HTMLテンプレートでよく使われるます。inputLabels()はInputクラスからバリデーションの項目名を取得するのに便利な関数です。 
 + 
 +^ヘルパー関数^機能^ 
 +|input\\ (string $key, $default=null):​string|フォームデータを取得| 
 +|queryString\\ (string $key, $default=null):​string|クエリ文字列を取得| 
 +|session\\ (string $key, $default=null):​mixed|セッション変数を取得| 
 +|flash\\ (string $key, $default=null):​mixed|フラッシュ変数を取得| 
 +|cookie\\ (string $key, $default=null):​string|クッキー変数を取得| 
 +|inputLabels\\ (string $message_key):​array|フォームデータのラベル配列を取得します| 
  
 \\ \\
  
 ===== レスポンス ===== ===== レスポンス =====
-==== RenderResponse ​==== +==== Responseクラス ​==== 
->TODO+ 
 +Responseクラスはレスポンスのベースクラスで、その目的はHTMLヘッダーとフラッシュデータの管理です。後述の RenderResponse(レンダリング用) と RedirectResponse(リダイレクト用) はResponseクラスから派生します。Responseクラスは以下のメソッドを持ちます。 
 + 
 +^メソッド^機能^ 
 +|addHeader($headers):​Response|HTMLヘッダーの追加| 
 +|hasFlash(string $key):​bool|フラッシュデータの存在確認| 
 +|addFlash(string $key, $value):​Response|フラッシュデータの追加| 
 +|commit(int $response_code=null)|レスポンスの確定|
  
 \\ \\
  
-==== RedirectResponse ==== +==== RenderResponseクラス ==== 
->TODO+ 
 +RenderResponseクラスはResponseクラスから派生します。HTMLレンダリングを行うレスポンス用のクラスで、以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。 
 + 
 +^メソッド^機能^ 
 +|<​nowiki>​__</​nowiki>​construct(string $html=null)|RenderResponseの生成| 
 +|setHtml(string $html=null):​RenderResponse|HTMLテキストの設定| 
 +|commit(int $response_code=null)|レスポンスの確定| 
 + 
 +アプリケーションでは、直接RenderResponseクラスを使うのではなく、後述する render() 関数を使用します。 
 + 
 +\\ 
 + 
 +==== RedirectResponseクラス ​==== 
 + 
 +RedirectResponseクラスはResponseクラスから派生したリダイレクト用のクラスです。リダイレクトではフラッシュデータを使ってリダイレクト先のページにデータを送ることが多いので、フラッシュ用のメソッドが追加されています。RedirectResponseクラスは以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。 
 + 
 +^メソッド^機能^ 
 +|<nowiki>__</​nowiki>​construct(string $url)|RedirectResponseの生成| 
 +|with(string $key, $value):​RedirectResponse|フラッシュデータの追加| 
 +|withInputs():​RedirectResponse|入力データをフラッシュに追加する| 
 +|withErrors(ErrorBag $errorBag):​RedirectResponse|エラーバッグをフラッシュに追加する| 
 +|withOldErrors():​RedirectResponse|前回のエラーバッグを次のフラッシュに転送する| 
 + 
 +TODO
 +以下は、レスポンスで使用するフラッシュデータのキーとその内容です。特に _old_inputs と errors はHTMLテンプレートで良く使用されます。 
 + 
 +^フラッシュキー^内容^ 
 +|_old_inputs|前回の入力データ| 
 +|_old_path|前回のURIパス| 
 +|errors|エラーバッグ| 
 + 
 +アプリケーションでは、直接RedirectResponseクラスを使うのではなく、後述する redirect() 関数を使用します。 
 + 
 +\\ 
 + 
 +==== ボイラープレート ==== 
 + 
 +レスポンス処理用のボイラープレートには以下の関数があります。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。 
 + 
 +^ヘルパー関数^機能^ 
 +|render\\ (string $view=null, array $variables=[])\\ :​RenderResponse|RenderResponseの生成 \\ テンプレート名とテンプレート変数を指定します| 
 +|redirect\\ (string $url)\\ :​RedirectResponse|RedirectResponseの生成\\ リダイレクトURLを指定します| 
 +|old\\ (string $key, $default = null)|キーを指定して前回の入力値を取得します| 
 +|back():​string|前回のURIを取得します| 
 +|errors():​ErrorBag|前回のエラーバッグを取得します| 
 + 
 +使用例: 
 +<code php> 
 +TODO: 
 +</​code>​
  
 \\ \\
  
apricot/usage/ja/http.1595996482.txt.gz · 最終更新: 2020/07/29 13:21 by tanaka