Ground Sunlight

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

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

道具箱

リポジトリ編

フレームワーク編

Webサービス編

自然言語処理環境編

メタ
リンク


このページへのアクセス
今日: 1 / 昨日: 1
総計: 23

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)入力データの削除

以下は、典型的な使用例です:

public function insert()
{
    $inputs = Input::all();
 
    // Do something.
    // ...
}


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)入力データの削除


Session

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フラッシュデータの取得

使用例:

TODO:


設定ファイル

セッションには以下の設定ファイルが存在します。

{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()フラッシュ変数のクリア

使用例:

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)クッキーの削除

使用例:

TODO:


設定ファイル

クッキーには以下の設定ファイルが存在します。

{your-project}/config/setting

cookie.setting.php
<?php
/**
 * This file contains cookie settings.
 */
return
[
    'path' => '',
    'domain' => '',
    'secure' => FALSE,
    'httponly' => FALSE,
];
  • path — ドメイン上のクッキーが有効なパス(デフォルト値はカレントパス:即ち公開パスpublic)
  • domain— クッキーが有効なドメイン(デフォルト値はカレントURLのドメイン)
  • secure— TRUEを設定すると、セキュアな接続が存在する場合にのみクッキーを設定します
  • httponly— TRUEを設定すると、HTTPを通してのみクッキーを設定します
設定値の詳細は、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):ResponseHTMLヘッダーの追加
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):RenderResponseHTMLテキストの設定
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前回のエラーバッグを次のフラッシュに転送する

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前回のエラーバッグを取得します

使用例:

TODO:


コメント

コメントを入力. Wiki文法が有効です:
 
apricot/usage/ja/http.txt · 最終更新: 2020/08/15 17:57 by y2sunlight