ホームページ  >  記事  >  バックエンド開発  >  PHP 定義済み: 定義済み定数とスーパーグローバル変数について理解する

PHP 定義済み: 定義済み定数とスーパーグローバル変数について理解する

PHPz
PHPzオリジナル
2023-03-21 14:52:391846ブラウズ

PHP は動的言語であり、開発者が作成したコードは対応するロジックを実行します。しかし、コードを実行するプロセスでは、タスクの完了を支援するために、環境変数やシステム定数のようなものが必要になることがよくあります。 PHP には、開発者が重要な情報を迅速に取得して処理できるようにする、事前定義された (または組み込みの) 変数がいくつか用意されています。これらの変数は、定義済み定数とスーパーグローバル変数の 2 つのタイプに分類されます。

事前定義定数

事前定義定数には、PHP における特別な定義があります。これらは、PHP スクリプトの実行が開始される前に定義されます。一般的に使用される事前定義定数は次のとおりです。

  • LINE: コードの行数を表します。

  • #FILE: ファイルのパスと名前を表します。

  • DIR: ファイルが配置されているディレクトリの絶対パスを表します。

  • FUNCTION: 関数名を表します。

  • CLASS: 名前空間を含むクラス名を表します。

  • TRAIT: 名前空間を含む特性名を表します。

  • METHOD: クラスのメソッド名を表します。

  • NAMESPACE: 現在のネームスペース名を表します。

これらの事前定義定数は読み取り可能ですが、再割り当てすることはできません。例:

<?php
echo __FILE__; // 输出当前文件的路径
echo __LINE__; // 输出当前代码的行数
?>

事前定義定数の目的は、開発者がコードをすばやく見つけてデバッグできるようにすることです。エラーレポートで使用したり、コードの実行パスやタイムスタンプなどを記録したりするために使用されます。

スーパー グローバル変数

スーパー グローバル変数は、PHP スクリプト内のどこからでもアクセスできる変数であり、スコープを気にする必要はありません。または関数、パラメータの受け渡し。すべてのスーパーグローバル変数はアンダースコアで始まるグローバル変数の配列であり、配列名はバージョンによって異なります。スーパーグローバル変数には次のタイプがあります:

  • $GLOBALS: すべての変数を含むグローバル スコープ配列 変数の名前は配列のキーです。

  • $_SERVER: サーバーと実行環境の情報。例: $_SERVER['PHP_SELF'] は、現在実行中のスクリプトのファイル名を返します。

  • $_GET: HTTP GET 変数。

  • $_POST: HTTP POST 変数。

  • $_FILES: HTTP ファイル アップロード変数。

  • $_REQUEST: HTTP リクエスト変数。$_GET、$_POST、$_COOKIE 変数の内容も含まれます。

  • $_SESSION: セッション変数。

  • $_COOKIE: HTTP Cookie。

  • $_ENV: 環境変数。

$_SERVER スーパー グローバル変数の例:

<?php
echo $_SERVER[&#39;PHP_SELF&#39;]; //显示当前执行脚本的文件名,即 index.php
echo $_SERVER[&#39;SERVER_NAME&#39;]; // 显示当前运行脚本所在的服务器的主机名(本机 IP)
echo $_SERVER[&#39;HTTP_REFERER&#39;]; // 获取网页的来源地址 (referer)
echo $_SERVER[&#39;DOCUMENT_ROOT&#39;]; // 显示当前执行脚本的文档根目录(/var/www/)
?>

スーパー グローバル変数の利点は、グローバル変数にアクセスする必要があるときに、グローバル変数を渡す必要がないことです。すべての関数でこれらの変数が使用されます。ただし、これらの変数はスクリプト内のどこからでも直接アクセスできるため、セキュリティ上の問題も発生します。攻撃者はいくつかの脆弱性を利用してこれらのグローバル変数の内容を変更し、システムに例外を生成させ、デバッグとその理由の分析を行うことができます。例外もさらに難しくなります。

結論:

事前定義された定数とスーパーグローバル変数は、PHP に組み込まれる変数の一部です。これらの存在により、PHP プログラマーの開発とデバッグが容易になります。より便利で効率的になります。ただし、それらを使用する場合は、予期しない問題を回避するために、セキュリティの問題と特定の実装の詳細も考慮する必要があります。

以上がPHP 定義済み: 定義済み定数とスーパーグローバル変数について理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。