メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
apricot:usage:ja:http目次
Apricot リクエストとレスポンス
リクエスト
Apricotのリクエストクラスは、PHPのスーパーグローバル変数を個別にカプセル化したシングルトンです。リクエスト取得用に以下のシングルトンがあります:
- Input — フォーム送信データ(GET変数またはPOST変数:methodに依存)
- QueryString — クエリ文字列(GET変数)
- Session — SESSION変数
- Flash — 1回限り有効なSESSION変数
- Cookie — COOKIE変数
これらはシングルトンなので、アプリケーションのどこからでもリクエストを取得することができます。
Inputクラス
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|mixed $keys) 必要入力データのみの取得 array except(array|mixed $keys) 不要なものを除く入力データの取得 set(string $key, string $vale) 入力データの設定 remove(string $key) 入力データの削除 all()
は、フォームからの全ての入力値を取得するメソッドです。$inputs = Input::all(); $account = $inputs['account']; $password = $inputs['password'];
以下は、上の例と同じ結果になります。
get()
は第2引数にデフォルト値を指定できます。$account = Input::get('account',null); $password = Input::get('password',null);
only()
は、指定したキーだけの入力値を取得する場合に使用します。$inputs = Input::only('account','password');
except()
は指定したキー以外の入力値を取得する場合に使用します。$inputs = Input::except('password_confirmation');
バリデーションなどの後で不要になった入力値は、
remove()
で削除して次の処理に進みます。Input::remove('password_confirmation');
QueryStringクラス
QueryStringクラスはクエリ文字列を取得する為のシングルトンです。このクラスは
Apricot\Foundation\SimpleInput
クラスをシングルトンにしたもので、$_GETから生成します。使用法: QueryString::{メソッド}
メソッド 機能 bool has(string $key) キー指定よる入力データの存在確認 string get(string $key, string $default = null) キー指定よる入力データの取得 array all() 全ての入力データの取得 array only(array|mixed $keys) 必要入力データのみの取得 array except(array|mixed $keys) 不要なものを除く入力データの取得 set(string $key, string $vale) 入力データの設定 remove(string $key) 入力データの削除 使用例は上のInputシングルトンを同じです。
Sessionクラス
Sessionクラスはセッション変数を設定及び取得をするシングルトンです。このクラスは
Apricot\Foundation\SimpleSession
クラスをシングルトンにしたもので、$_SESSIONから生成します。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 フラッシュデータの取得 使用例:
// 指定したデータがセッションに存在するかを調べる。 if (Session::has('key')) { // 存在する } // 指定したデータをセッションから取得する。第2引数はデフォルト値です。 $value = Session::get('key', 'default'); // セッションへデータを保存する。 Session::set('key', 'value'); // 指定したデータをセッションから削除する Session::remove('key');
start()
メソッドはフレームワークによってアプリケーション初期化時に呼び出されます。clear()
メソッドは $_SESSIONだけをクリアします。destroy()
メソッドは 内部的にclear() メソッドとPHPのsession_destroy()を呼び出して、現在のセッションに関連づけられたすべてのデータを完全に破棄し、さらに、現在のセッションIDもクッキーから削除します。通常、destroy() メソッドは フレームワークによってログオフ時に呼びされます。flash()
メソッドは後述のFlashシングルトンで使用されます。通常、フラッシュデータの操作にはFlashシングルトンを使用します。
設定ファイル
セッションには以下の設定ファイルが存在します。
/your-project/config/setting
- 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] */ ], ];
- name — セッション名(初期設定値は環境変数APP_SECRETを使って設定します)
- ini.gc_maxlifetime — サーバに保存されるセッション変数の有効期間(デフォルト値は1440[秒])
- ini.gc_probability — PHPのマニュアルを参照して下さい(既定値は1)
- ini.gc_divisor — PHPのマニュアルを参照して下さい(デフォルト値は100)
- ini.cookie_lifetime — セッションクッキーの有効期間(デフォルト0ではブラウザを閉じたらセッションは破棄されます)
Flashクラス
フラッシュとは、セッション内で一回限りだけ有効なセッション変数(次の画面の遷移のときまで保存される変数)のことです。Flashクラスはフラッシュ変数の設定及び取得を行うシングルトンで、
Apricot\Foundation\SimpleFlash
クラスから作ります。使用法: Flash::{メソッド}
メソッド 機能 has(string $key):bool フラッシュ変数の存在確認 get(string $key, $default = null) フラッシュ変数の取得 set(string $key, $value) フラッシュ変数の設定 remove(string $key) フラッシュ変数の削除 clear() フラッシュ変数のクリア 使用例:
// 指定したデータがフラッシュに存在するかを調べる。 if (Flash::has('key')) { // 存在する } // 指定したデータをフラッシュから取得する。第2引数はデフォルト値です。 $value = Flash::get('key', 'default'); // フラッシュへデータを保存する。 Flash::set('key', 'value'); // 指定したデータをフラッシュから削除する Flash::remove('key'); // フラッシュをクリアする Flash::clear();
フレームワークが使用するFlashデータ
以下のフラッシュ・キーはフレームワークで使用しています。
キー 型 内容 _old_inputs array 前回の入力データ _old_path string 前回のURIパス errors ErrorBag エラーバッグ
Cookieクラス
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) クッキーの削除 使用例:
// 指定したデータがクッキーに存在するかを調べる。 if (Cookie::has('key')) { // 存在する } // 指定したデータをクッキーから取得する。第2引数はデフォルト値です。 $value = Cookie::get('key', 'default'); // クッキーへデータを1日間だけ保存する。第3引数は有効期間[秒]です。 Cookie::set('key', 'value', 24*60*60); // クッキーへデータを永続的に保存する。 Cookie::forever('key', 'value'); // 指定したデータをクッキーから削除する。 Cookie::remove('key');
set()
メソッドの第3引数を省略した場合は、デフォルト値の0が設定されます。この場合はセッションクッキーとなり、セッションが終了すると保存したデータは消えます。forever()
メソッドは永続的にクッキーを保存しますが、その期間は設定ファイル( cookie.setting.php )のforever
によって決まります。
設定ファイル
クッキーには以下の設定ファイルが存在します。
/your-project/config/setting
- cookie.setting.php
<?php /** * This file contains cookie settings. */ return [ 'path' => '', 'domain' => '', 'secure' => FALSE, 'httponly' => FALSE, 'forever' => 365*24*60*60, ];
- path — ドメイン上のクッキーが有効なパス(デフォルト値はカレントパス:即ち公開パスpublic)
- domain — クッキーが有効なドメイン(デフォルト値はカレントURLのドメイン)
- secure — TRUEを設定すると、セキュアな接続が存在する場合にのみクッキーを設定します
- httponly — TRUEを設定すると、HTTPを通してのみクッキーを設定します
- forever — 永続的クッキーの実際の保存期間を設定します(デフォルト値は365日)
path から httponly までの設定値の詳細は、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フォームデータのラベル配列を取得します
レスポンス
Responseクラス
Responseクラスはレスポンスのベースクラスで、その目的はHTMLヘッダーとフラッシュデータの管理です。後述の RenderResponse(レンダリング用) と RedirectResponse(リダイレクト用) はResponseクラスから派生します。Responseクラスは以下のメソッドを持ちます。
メソッド 機能 addHeader($headers):Response HTMLヘッダーの追加 hasFlash(string $key):bool フラッシュデータの存在確認 addFlash(string $key, $value):Response フラッシュデータの追加 commit(int $response_code=null) レスポンスの確定
RenderResponseクラス
RenderResponseクラスはResponseクラスから派生します。HTMLレンダリングを行うレスポンス用のクラスで、以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。
メソッド 機能 __construct(string $html=null) RenderResponseの生成 setHtml(string $html=null):RenderResponse HTMLテキストの設定 commit(int $response_code=null) レスポンスの確定 アプリケーションでは、直接RenderResponseクラスを使うのではなく、後述する render() 関数を使用します。
RedirectResponseクラス
RedirectResponseクラスはResponseクラスから派生したリダイレクト用のクラスです。リダイレクトではフラッシュデータを使ってリダイレクト先のページにデータを送ることが多いので、フラッシュ用のメソッドが追加されています。RedirectResponseクラスは以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。
メソッド 機能 __construct(string $url) RedirectResponseの生成 with(string $key, $value):RedirectResponse フラッシュデータの追加 withInputs():RedirectResponse 入力データをフラッシュに追加する withErrors(ErrorBag $errorBag):RedirectResponse エラーバッグをフラッシュに追加する withOldErrors():RedirectResponse 前回のエラーバッグを次のフラッシュに転送する 以下は、RedirectResponseクラスで使用するフラッシュデータです。_old_inputs は withInputs()で、errorsは withErrors() と withOldErrors()で使用されます。
キー 型 内容 _old_inputs array 前回の入力データ _old_path string 前回のURIパス errors ErrorBag エラーバッグ アプリケーションでは、直接RedirectResponseクラスを使うのではなく、後述する redirect() 関数を使用します。
ボイラープレート
レスポンス処理用のボイラープレートには以下の関数があります。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。
ヘルパー関数 機能 render(string $view=null, array $variables=[])
:RenderResponseRenderResponseの生成
テンプレート名とテンプレート変数を指定しますredirect(string $url):RedirectResponse RedirectResponseの生成
リダイレクトURLを指定しますold(string $key, $default = null):string キーを指定して前回の入力値を取得します back():string 前回のURIを取得します errors():ErrorBag 前回のエラーバッグを取得します render()
は、テンプレート名(string)とテンプレート変数(array)を指定してHTMLをレンダリングしてRenderResponseオブジェクトを返す関数です。テンプレートについては、HTMLテンプレートを参照して下さい。以下の例では、ユーザモデルで全件検索した結果をテンプレート変数としてユーザ一覧を表示しています。/** index action */ public function index() { $users = $this->user->findAll(); return render("user.index", ["users"=>$users]); }
以下は
redirect()
とback()
の典型的な使用例です。フォーム送信を受け取るアクションでは、通常、バリデーションに失敗した場合は、前回の入力値とエラー内容と共に送信元のページに戻ります。以下の例では、redirect() の引数に back() で取得した前回のURIを指定し、RedirectResponse オブジェクトを得た後に、withInputs() と withErrors() メソッドを使って前回の入力値とエラー内容をフラッシュを使用してリダイレクト先に渡しています。/** update action */ public function update() { // バリデーション結果に応じてリダイレクトする if ($errorBag) { // 失敗した時 return redirect(back())->withInputs()->withErrors($errorBag); } // 成功した時 return redirect(route("user/{$id}/edit")); }
old()
とerrors()
はBladeテンプレートで良く使用される関数です。old() はフラッシュで渡された前回の入力値を取得する関数で、第2引数はデフォルト値です。以下はユーザ名の入力フィールドの例です。このように、データ編集ページの場合、通常は第2引数にはモデルから取得したテンプレート変数を渡します。<input type="text" name="account" id="account" value="{{old('account',$user->account)}}">
errors()
は、前ページからフラッシュで渡されたエラーバッグを取得する関数です。以下の例では、エラーバッグのcount()メソッドでエラーの数を取得し、エラーがあれば、その内容を出力しています。エラーバッグはIteratorAggregateインターフェースを実装してるのでforeach()などのIteratorを使用した構文が使用できます。@if($errors->count()) @foreach($errors as $key=>$value) <div class="alert">{{$value}}</div> @endforeach @endif
apricot/usage/ja/http.txt · 最終更新: 2020/09/03 13:45 by y2sunlight
コメント
https://www.nike-zoom.us.com/ https://www.michael-jordanshoes.us.com/ https://www.nikehuaraches.us.com/ https://www.nike-airmax98.us/ https://www.pandorabraceletsforwomen.us/ https://www.uncjordan1.us.com/ https://www.nike-clearance.us.com/ https://www.pandoras.us.org/ https://www.fjallravenkankenbackpack.us/ https://www.airjordan1mid.us.com/ https://www.airjordan14.us.com/ https://www.yeezyshoess.us.com/ https://www.nikefreernrun.us.com/ https://www.redbottomshoes-forwomen.us/ https://www.pandoracanadajewelrycharms.ca/ https://www.nike-presto.us.com/ https://www.lebron16shoes.us.org/ https://www.adidas-nmds.us.org/ https://www.redbottomslouboutinshoes.us/ https://www.adidasultra-boosts.us.com/ https://www.new-nikeshoes.us.com/ https://www.nikecortezshox.us.com/ https://www.air-max95.us.com/ https://www.christianlouboutins.us.org/ https://www.yeezys-adidas.us.com/ https://www.air-jordansretro.us.com/ https://www.airjordan9.us.com/ https://www.airjordanshoesretros.us.com/ https://www.nikesclearance.us/ https://www.airmax2019.us.org/ https://www.nikeoutletonline-store.us.com/ https://www.pandora-earrings.us/ https://www.pandoracharmscom.us/ https://www.jewelrycharmsrings.uk.com/ https://www.pandorabracelets-clearance.us.com/ https://www.nikeoutletstoreclearance.us.com/ https://www.nikebasketball-shoes.us.com/ https://www.christianlouboutins.uk.com/ https://www.nikeshoesshop.us.com/ https://www.nikefactory-outlet.us.org/ https://www.nikefactorys.us/ https://www.jordan12s.us.com/ https://www.moncleroutletuk.uk.com/ https://www.menwomenshoes.us/ https://www.nike-stores.us.org/ https://www.nike-outletstoreonlineshopping.us.com/ https://www.lebron-jamesshoes.us.org/ https://www.pandorascharmsjewelry.us/ https://www.ultra-boosts.us.com/ https://www.airforce1shoes.us.com/ https://www.kevin-durantsshoes.us.com/ https://www.jordansretro11.us.com/ https://www.pandoranecklaces.us/ https://www.ferragamosshoes.us.com/ https://www.sneakerswebsite.us/ https://www.lebronjamesshoessale.us.com/ https://www.nikefreerun.us.org/ https://www.christianlouboutins-outlet.us.com/ https://www.jordansretro13.us.com/ https://www.red-bottomheels.us/ https://www.lebron16shoes.us/ https://www.nike-jordan1.us.com/ https://www.pandora-jewelryrings.us/ https://www.nikestores.us.org/ https://www.nikeshoescybermondayblackfriday.us.com/ https://www.newjordanscomingout.us.com/ https://www.yeezyboosts-350.us.com/ https://www.nikereactuptempo.us.com/ https://www.nikestorefactory.us.com/ https://www.airforce-1.us.org/ https://www.nikeshoesonlines.us.com/ https://www.yeezysboosts.us.com/ https://www.pandorashop.ca/ https://www.air-jordans1.us.com/ https://www.airjordan11.us.org/ https://www.jordan1s.us.org/ https://www.golden-gooses.us.com/ https://www.jordan3.us.com/ https://www.newnikeshoes.us.org/ https://www.jordan1high.us.com/ https://www.nike-runningshoes.us/ https://www.airforceones.us.com/ https://www.nikes-sneakers.us.com/ https://www.christianlouboutinshoessaleoutlet.us/ https://www.jewelrynecklacerings.uk.com/ https://www.fjallravenbackpack.us/ https://www.newshoes2019.us/ https://www.ferragamobelts.us.com/ https://www.nikeairmax720.us.com/ https://www.jewelrycharms.us/ https://www.nikeoutlet-factory.us.com/ https://www.jordansshoesformen.us.com/ https://www.jordanshoesforkids.us/ https://www.jordanaj1.us.com/ https://www.nmdr1adidas.us.com/ https://www.valentinoshoessale.us.com/ https://www.nikeoutletstores.us.org/ https://www.nikeshoess.us.org/ https://www.jordan11gammablue.us/ https://www.air-jordan8.us.com/ https://www.adidassneakers.us.com/ https://www.airjordans.com.co/ https://www.airjordan-retro11.us.com/ https://www.jordan32shoes.us/ https://www.nikeairforce.us.org/ https://www.nikeairmax720.us.org/ https://www.pandoracom.ca/ https://www.nikeshoesfactorys.us.com/ https://www.vansshoes-outlets.us.com/ https://www.kyrieirvingbasketballshoes.us.com/ https://www.jordan-retro4.us.com/ https://www.nikerunning-shoes.us.com/ https://www.nikeoutletonlineclearance.us.com/ https://www.nike-outletstores.us.com/ https://www.max97trainers.uk.com/ https://www.nikeair-max.us.org/ https://www.jordanretroshoes.us.org/ https://www.nikeair-jordan.us.com/ https://www.charmsbracelet.uk.com/ https://www.christian-louboutinoutletsale.us.com/ https://www.nikecortez.us.org/ https://www.nikeshoes2019.us.com/ https://www.airjordanssneakers.us.org/ https://www.louboutinshoess.us/ https://www.nikeshoesclearance.us.com/ https://www.nikeoutletstore-onlineshopping.us.org/ https://www.yeezyscheap.us.com/ https://www.airmax-98.us.com/ https://www.nike-basketballshoes.us.org/ https://www.nikeair-max270.us/ https://www.airjordans-sneakers.us/ https://www.jordan7.us.com/ https://www.nikefactorystoreonline.us.com/ https://www.asicsshoesoutlet.us.com/ https://www.christian-louboutin-shoes.us.org/ https://www.pandorascharm.us.com/ https://www.nike--shoes.us.com/ https://www.air-jordan10.us.com/ https://www.nikesneakerssale.us.com/ https://www.nikeoutletstoreonlines.us.com/ https://www.louboutinheelsshoes.us.com/ https://www.pandorasjewelryoutlet.us.com/ https://www.nikeairzooms.us.com/ https://www.pandorajewelryofficialwebsite.us/ https://www.red-bottomshoesforwomen.us.com/ https://www.charmsjewelryrings.uk.com/ https://www.shoesyeezy.us.com/ https://www.cheapnikesshoes.us.com/ https://www.nikeoutletstoreonline-shopping.us.com/ https://www.jordans13retro.us/ https://www.jordan4s.us.com/ https://www.nikesneakersoutlet.us.org/ https://www.shoes-yeezy.us.com/ https://www.kyrie-irvingshoes.us.org/ https://www.runningshoesformenwomen.us/ https://www.yeezy500.us.org/ https://www.christianslouboutin.us.com/ https://www.outletstoreonlineshopping.us/ https://www.nikeshoesfactorystore.us.com/