php globalグローバル変数の概要
phpの
たとえば、簡単なphpプロファイルが次のようになります.
私たちがこの
簡単:
では問題です.もしある関数で私がこのグローバル変数を使うなら、あなたはこのように書くかもしれません.
Sorry、あなたはこの変数の価値を得ることができなくて、得たのは
これは私が実際に出会った穴です.つまり、
では、もう一つ質問です.
そう、この値は
は使いやすいように見えますが、ちょっとした不注意でカバーされやすいです.たとえば、簡単な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();
Sorry、あなたはこの変数の価値を得ることができなくて、得たのは
null
だけですこれは私が実際に出会った穴です.つまり、
の初期化は
でしかできません.私が言った
は、関数体やクラスに含まれてはいけないことを意味します.include("./config.inc"); //
function test()
{
global $name; //
echo $name; //Yi_Zhi_Yu
}
test();
では、もう一つ質問です.
test
の中でグローバル属性が定義された変数($age=25
と仮定)が、外で値が変更された場合($age=27
)、この変数($age
)が別の関数で呼び出されます.このときのこの$age
はどの値なのでしょうか.コードは以下のように初期化されたときの値(25
)です.それとも外で修正された値(2
)なのでしょうか.function test()
{
global $age;
$age=25;
}
function test2()
{
global $age;
var_dump($age); // ?
}
test();
var_dump($age);
$age=27;
test2();
そう、この値は
27
であるべきです.これがグローバル変数です.ただし、この定義と初期化は1つの関数内で行われます(ただし、この方法は推奨されません.一般的には、私が言ったプロファイルで初期化され、使用時にのみグローバル属性を定義しますが、コードで値を変更することはなく、構成項目として取得されます).