Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:http

差分

このページの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:
  --- //[[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:
  
 ===== リクエスト ===== ===== リクエスト =====
-==== Input ==== 
  
-Inputクラスはフォーム送信デ取得するクラスです。Inputと後述[[#QueryStringクラス|QueryStringクラス]]は共に次に説明するSimpleInputクラスを使って実装します+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クラスは同じく ''Apricot\Foundation\SimpleInput'' クラスをシングルトンにしたものです。
  
 使用法: ** 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::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.txt · 最終更新: 2020/09/03 13:45 by y2sunlight