PHPでの定義済み変数
定義済み変数について
PHP4.1.0以降、新しい変数が定義されました。これ以前は長ったらしい名前のやつを使っていたようです。その為以前のバージョンの変数もまだ使えますが、推奨はされていません。PHP5からは設定で無効にできるようです。もっと言うとさらに古いバージョンの定義済み変数も存在しますが、あえて使う必要はないと思われるのでここでは掲載しません。
これらの新しい変数は全てのスコープで使用可能となります。変数にはスコープという有効範囲が定められており、その有効範囲内でしか使う事が出来いのですが、これらの新しい変数はスコープを無視してどのスコープでも有効となります。そのせいか、スーパーグローバルという呼び方をされるようです。PHPにはユーザが定義できるスーパーグローバル(スコープ無視)はありません。ただし、これらのスーパーグローバルは可変変数には使えない事になっています。
PHPは以前のバージョンの定義済み変数(長い名前の方)と新しいバージョンの定義済み変数を分けて捉えます。つまりまったく別の変数として扱われるので、注意して下さい。以前のバージョンの定義済み変数はスーパーグローバル(スコープ無視)ではないので、global宣言が必要になります。
定義済み変数一覧
定義済み変数を一覧表にしました。
それぞれの変数は連想配列とされていて、いくつかのキーを持っています。この定義済み変数は変数ですが、私のところではまだ解説が先になる連想配列です。さらにフォーム処理やクッキーなどと密接に絡んでくるのでここでは一覧で紹介するだけに留めておきます。
変数名 | 解説 | 以前のバージョン |
---|---|---|
$GLOBALS | 現在のスクリプトのグローバルスコープ(ユーザ定義関数内以外の場所)の中で利用可能な全ての変数へアクセスする事ができます。この配列のキーはグローバル変数の名前になります。 |
PHP3以降 |
$_SERVER | Webサーバーまたはスクリプトの実行環境に直接関係するものにより設定された変数。 |
$HTTP_SERVER_VARS |
$_GET | HTTP GETによりスクリプトに入力された変数。 |
$HTTP_GET_VARS |
$_POST | HTTP 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はクッキー処理により生成される値です。