PHPでの定義済み変数
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの変数 >> PHPでの定義済み変数

PHPでの定義済み変数

定義済み変数について

PHP4.1.0以降、新しい変数が定義されました。これ以前は長ったらしい名前のやつを使っていたようです。その為以前のバージョンの変数もまだ使えますが、推奨はされていません。PHP5からは設定で無効にできるようです。もっと言うとさらに古いバージョンの定義済み変数も存在しますが、あえて使う必要はないと思われるのでここでは掲載しません。

これらの新しい変数は全てのスコープで使用可能となります。変数にはスコープという有効範囲が定められており、その有効範囲内でしか使う事が出来いのですが、これらの新しい変数はスコープを無視してどのスコープでも有効となります。そのせいか、スーパーグローバルという呼び方をされるようです。PHPにはユーザが定義できるスーパーグローバル(スコープ無視)はありません。ただし、これらのスーパーグローバルは可変変数には使えない事になっています。

PHPは以前のバージョンの定義済み変数(長い名前の方)と新しいバージョンの定義済み変数を分けて捉えます。つまりまったく別の変数として扱われるので、注意して下さい。以前のバージョンの定義済み変数はスーパーグローバル(スコープ無視)ではないので、global宣言が必要になります。

定義済み変数一覧

定義済み変数を一覧表にしました。

それぞれの変数は連想配列とされていて、いくつかのキーを持っています。この定義済み変数は変数ですが、私のところではまだ解説が先になる連想配列です。さらにフォーム処理やクッキーなどと密接に絡んでくるのでここでは一覧で紹介するだけに留めておきます。

PHPマニュアル 定義済みの変数

変数名 解説 以前のバージョン
$GLOBALS

現在のスクリプトのグローバルスコープ(ユーザ定義関数内以外の場所)の中で利用可能な全ての変数へアクセスする事ができます。この配列のキーはグローバル変数の名前になります。

参考 変数の有効範囲

PHP3以降
$_SERVER

Webサーバーまたはスクリプトの実行環境に直接関係するものにより設定された変数。

参考 サーバ変数

$HTTP_SERVER_VARS
$_GET

HTTP GETによりスクリプトに入力された変数。

参考 $_GETと$_POST

$HTTP_GET_VARS
$_POST

HTTP POSTによりスクリプトに入力された変数。

参考 $_GETと$_POST

$HTTP_POST_VARS
$_COOKIE

HTTP COOKIEによりスクリプトに入力された変数。

参考 クッキー処理

$HTTP_COOKIE_VARS
$_FILES HTTP POSTファイルアップロードによりスクリプトに渡される変数。 $HTTP_POST_FILES
$_ENV 環境によりスクリプトに指定される変数。 $HTTP_ENV_VARS
$_SESSION スクリプトのセッションに現在登録されている変数。 $HTTP_SESSION_VARS
$_REQUEST ユーザ入力機構(フォームなど)によりスクリプトに渡される全ての変数。この配列に含まれる変数の存在と順番は、設定ディレクティブvariables_orderに基づき定義されます。 PHP4.1.0以降
$php_errormsg PHPによって発せられた最後の(直近の)エラーメッセージのテキストを格納する変数。 エラーが発生したスコープ内で、かつtrack_errors設定オプションがオン(デフォルトの設定値はオフ)にセットされている場合のみ有効。  

$_GET$_POSTなどはフォームなどから受け取る値です。$_COOKIEはクッキー処理により生成される値です。