FuelPHPを利用する場合、リクエストからのパラメータの取得にはInputクラスを使うことを推奨されています。
この辺りは自分で$_GETや$_POSTなどと記述したいところかもしれませんが、フレームワークを使う上ではお作法に従いましょう。
下記は、Inputクラスについてのリファレンス+サンプルとなります。
Input::uri()
ホスト名(http://hogehoce.com/)以降のスラッシュに続くURIを取得できます。
実行例として、http://www.code4u.org/controller/actionへアクセスした場合です。
実行例
[shell]
http://www.code4u.org/controller/action へリクエスト
[/shell]
コード
[php]
echo Input::uri();
[/php]
実行結果
[php]
/controller/action
[/php]
Input::json($index = null, $default = null)
json形式で送られたリクエストボディ(パラメータ)をデコードし返します。
実行例として、下記のパラメータ(postdata)をリクエストボディに含めた場合です。
実行例
[javascript]
var postdata = {
id : 1,
name : ”,
};
$,ajax({
type: ‘POST’,
url: ‘リクエスト先URL’,
data: postdata,
})
[/javascript]
コード
[php]
echo Input::json(‘id’);
echo Input::json(‘name’, ‘default’);
[/php]
実行結果
[php]
1
default
[/php]
Input::xml($index = null, $default = null)
xml形式で送られたリクエストボディ(パラメータ)をデコードし返します。
実行例として、下記のパラメータ(postdata)をリクエストボディに含めた場合です。
実行例
[javascript]
var postdata = ‘
$,ajax({
type: ‘POST’,
url: ‘リクエスト先URL’,
data: postdata,
})
[/javascript]
コード
[php]
echo Input::xml(‘id’);
echo Input::xml(‘name’, ‘default’);
[/php]
実行結果
[php]
1
default
[/php]
Input::cookie($index = null, $default = null)
$_COOKIE 変数を読み込みます。
引数なしで呼び出すと、すべてのクッキーを配列で取得します。
実行例として、下記のcookieを取得した場合です。
実行例
[shell]
cookie=1234567890;
[/shell]
コード
[php]
echo Input::xml(‘cookie’);
[/php]
実行結果
[php]
1234567890
[/php]
Input::get($index = null, $default = null)
$_GET変数を読み込みます。
引数なしで呼び出すと、配列をすべて取得します。
実行例として、下記のパラメータを取得した場合です。
実行例
[shell]
http://www.code4u.org/?id=2 へリクエスト
[/shell]
コード
[php]
echo Input::get(‘id’);
[/php]
実行結果
[php]
2
[/php]
Input::post($index = null, $default = null)
$_POST変数を読み込みます。
引数なしで呼び出すと、配列をすべて取得します。
実行例として、下記のパラメータを取得した場合です。
実行例
[javascript]
var postdata = ‘id=2’;
$,ajax({
type: ‘POST’,
url: ‘リクエスト先URL’,
data: postdata,
})
[/javascript]
コード
[php]
echo Input::post(‘id’);
[/php]
実行結果
[php]
2
[/php]
Input::delete($index = null, $default = null)
DELETEメソッドで呼び出されたときに、php://input ストリームからパラメータを読み込みます。
引数なしで呼び出すと、配列をすべて取得します。
実行例として、下記のパラメータを取得した場合です。
実行例
[shell]
id=1
[/shell]
コード
[php]
echo Input::delete(‘id’);
[/php]
実行結果
[php]
1
[/php]
Input::put($index = null, $default = null)
PUTメソッドで呼び出されたときに、php://input ストリームからパラメータを読み込みます。
引数なしで呼び出すと、配列をすべて取得します。
実行例として、下記のパラメータを取得した場合です。
実行例
[shell]
id=1
[/shell]
コード
[php]
echo Input::put(‘id’);
[/php]
実行結果
[php]
1
[/php]
Input::is_ajax()
コントローラがajaxから呼び出された場合に”true”を返します。
実行例として、下記のリクエストを実行した場合です。
実行例
[javascript]
var postdata = ‘id=1’;
$,ajax({
type: ‘POST’,
url: ‘リクエスト先URL’,
data: postdata,
})
[/javascript]
コード
[php]
echo Input::is_ajax();
[/php]
実行結果
[php]
true
[/php]
Input::method($default = ‘GET’)
コントローラの呼び出しに使用されたHTTPメソッドを返します。
実行例として、下記のリクエストを実行した場合です。
実行例
[javascript]
var postdata = ‘id=1’;
$,ajax({
type: ‘POST’,
url: ‘リクエスト先URL’,
data: postdata,
})
[/javascript]
コード
[php]
echo Input::method();
[/php]
実行結果
[php]
POST
[/php]
Input::protocol()
コントローラの呼び出しに使用された HTTP プロトコルを返します。
実行例として、下記のリクエストを実行した場合です。
実行例
[javascript]
var postdata = ‘id=1’;
$,ajax({
type: ‘POST’,
url: ‘http://リクエスト先URL’,
data: postdata,
})
[/javascript]
コード
[php]
echo Input::protocol();
[/php]
実行結果
[php]
http
[/php]
HTTPSの場合ですが、ロードバランサを経由する際に443からWebサーバへ80で渡している場合には正確な情報が取得できません。
そのため、Input::server()を利用しロードバランサ側で設定した変数を取得し判別を行う必要があります。
下記、Input::protocol()の実装内容となります。
[php]
/**
* Return’s the protocol that the request was made with
*
* @return string
*/
public static function protocol()
{
if (static::server(‘HTTPS’) == ‘on’ or static::server(‘HTTPS’) == 1 or static::server(‘SERVER_PORT’) == 443)
{
return ‘https’;
}
return ‘http’;
}
[/php]
Input::ip()
ユーザのグローバルIP ドレスを返します。
プロキシサーバ経由でアクセスされた場合、プロキシサーバのIPアドレスを返します。
コード
[php]
echo Input::ip();
[/php]
実行結果
[php]
123.123.123.123
[/php]
Input::real_ip($default = ‘0.0.0.0’, $exclude_reserved = false)
ユーザの”実際のIPアドレス”を返します。
プロキシサーバからのアクセスだと検知すると、プロキシサーバが付加するヘッダから、ユーザのプライベートIPアドレスを特定しようと試みます。
この情報が与えられない場合、グローバルIPアドレスを返します。
コード
[php]
echo Input::real_ip();
[/php]
実行結果
[php]
123.123.123.123
[/php]
Input::server($index = null, $default = null)
$_SERVER変数にアクセスします。
引数なしで呼び出すと、配列をすべて取得します。
実行例
[shell]
https://www.code4u.org/ へリクエスト
[/shell]
コード
[php]
echo Input::server(‘HTTPS’);
echo Input::server(‘HTTP_HOST’);
[/php]
実行結果
[php]
on
www.code4u.org
[/php]
Input::referrer($default = ”)
$_SERVER配列からリファラを取得します。
コード
[php]
echo Input::referrer();
[/php]
実行結果
[php]
http:/www.code4u.org/
[/php]
Input::user_agent($default = ”)
$_SERVER配列からユーザエージェントを取得します。
コード
[php]
echo Input::user_agent();
[/php]
実行結果
[php]
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; .NET CLR 1.1.4322)
[/php]
Input::all()
GET, POST, PUT および DELETE 配列のすべてを取得します。
コード
[php]
Input::all();
[/php]
Input::file($index = null, $default = null)
$_FILES配列の要素を取得します。
コード
[php]
Input::file();
[/php]
Input::param($index = null, $default = null)
$_GET、$_POST、PUTまたはDELETE配列のいずれかを読み込みます
コード
[php]
Input::param();
[/php]
そんなにメソッド数も多くないので、全て覚えてしまう・・・またはEclipseなどでコード補完を利用してしまうことで、今まで$_POST[‘id’]の様にやっていた個所を、Input::post(‘id’, 0)のように記述するだけでいろいろなメリットが得られます。
上記の場合には、POSTされた値(id)が無ければ”0″が入ります!
コメント