ホームページ >バックエンド開発 >PHPチュートリアル >php グローバル グローバル変数 雑談

php グローバル グローバル変数 雑談

WBOY
WBOYオリジナル
2016-06-23 13:36:23747ブラウズ

PHP のグローバル変数は非常に便利そうに見えますが、注意しないと簡単に行き詰まってしまう可能性があります。

例: 単純な php 設定ファイルが次のような場合:

$name="Yi_Zhi_Yu";

この $name を使用したい場合、include を使用することは誰もが知っています。はい、これは機能します。しかし、統合された変更を容易にするために、この $name をグローバル変数として使用したい場合はどうすればよいでしょうか?

それも簡単です:

include("./config.inc");global $name;echo $name; //Yi_Zhi_Yu

次に、このグローバル変数を特定の関数で使用したい場合はどうすればよいでしょうか?このように書いてください

function test(){    include("./config.inc"); //这里加载是错误的    global $name;    var_dump($name);}test();

申し訳ありませんが、このようにこの変数の値を取得することはできません。取得できるのは null だけです

これは私が実際に遭遇した落とし穴です。つまり、ファイルからロードされたグローバル変数の初期化は、スクリプト全体の最も外側の部分で行われます。レイヤー、私が話している最も外側のレイヤーは、関数本体やクラスに含めることができないことを意味します

うーん、それから、別の質問があります。test で定義されたグローバル属性を持つ変数です ( $age=25 を想定)、値が外部 ($age=27) で変更され、この変数 ($age) が別の関数で呼び出された場合、このときの $age の値は次のとおりです。 、これは初期化時の値 (25)、または外部で変更された値 (27) です。

include("./config.inc"); //最外层初始化全局变量function test(){    global $name; //使用的时候定义其全局属性    echo $name; //Yi_Zhi_Yu}test();

はい、この値は 27 である必要があります。これはグローバル変数ですが、この定義と初期化はすべて関数本体で行われます (ただし、この方法はお勧めできません。通常、冒頭で述べた設定はファイル内で初期化されます) 、そのグローバル プロパティは使用時にのみ定義されますが、その値はコード内で変更されず、構成アイテムとしてのみ取得されます)。

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