この記事は、PHP における global static と $GLOBALS の使用法と違いをまとめて紹介しています。両者の違いを理解する必要がある人は参照してください。
1.global はページ全体で機能します。
例1
コードは次のとおりです |
コードをコピー |
グローバル $var1,$var2;
|
同名の外部変数の参照であり、変数自体のスコープは関数本体内にあります。これらの変数の値を変更すると、同じ名前の外部変数も当然変更されます。ただし、& を使用すると、その変数は同じ名前の参照ではなくなります。
コードは次のとおりです |
コードをコピー |
$var1 = 1;$var2 = 2;
関数テスト(){
グローバル $var1,$var2
// アクションの範囲は関数本体内です
$var1 = 3;}
テスト();
エコー $var1;
?>
|
結果は3です。
同じ名前の参照なので
関数本体内で定義された PHP グローバル変数は関数本体外で使用できます。関数本体外で定義されたグローバル変数は関数本体内では使用できません。
コードは次のとおりです
| コードをコピー
|
$glpbal $a; $a=123; 関数 f() { echo $a; }
|
次の例を見てください
コードは次のとおりです
コードをコピー |
|
function f() { global $a; $a=123; } f(); // 正しい、 を使用できます。
|
2.static は関数とクラス内でのみ機能します。
global と $GLOBALS は基本的に同じように使用されますが、実際の開発ではまったく異なります。
global は、関数の実際の外部変数ではなく、関数の外部変数を指すエイリアス変数を関数内に生成します。エイリアス変数が指すアドレスが変更されると、いくつかの予期しない状況が発生します。
例1.
コードは次のとおりです
コードをコピー
|
|
/*
*作者:ajax123
*qq:283400245
*/
クラスの人{
static$name="ajax123";//static は静的属性を宣言します
static$age=25;//static は静的プロパティを宣言します
static$address="Beijing";//static は静的属性を宣言します
関数 Song(){
echo "My name is : ".self::$name."
";//クラス内: self クラスを通じて静的プロパティにアクセスします
echo "I am ".self::$age."
";//クラス内: self クラスを通じて静的プロパティにアクセスします
echo "I live in ".self::$address."
";// クラス内: self クラスを通じて静的プロパティにアクセスします
}
}
echoperson::$name."
";//外部クラス: クラス名 person を通じて静的プロパティにアクセスします
echoperson::$age."
";//外部クラス: クラス名 person を通じて静的プロパティにアクセスします
echoperson::$address."
";//外部クラス: クラス名 person を通じて静的プロパティにアクセスします
?>
$GLOBALS[] は確かに外部変数と呼ばれ、関数内外で常に一貫性があります
例 #1 $GLOBALS の例
コードは次のとおりです |
コードをコピー |
関数テスト() {
$foo = "ローカル変数";
グローバル スコープの $foo をエコーします: ' . $GLOBALS["foo"] "n";
echo '現在のスコープの $foo: ' . $foo .
}
$foo = "コンテンツの例";
テスト();
?>
|
上記のルーチンの出力は次のようになります:
グローバルスコープの$foo: コンテンツの例
現在のスコープ内の $foo: ローカル変数
http://www.bkjia.com/PHPjc/628908.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628908.html技術記事この記事では、PHP における global static と $GLOBALS の使用法と違いをまとめて紹介します。両者の違いを理解する必要がある人は参照してください。 1.globalはページ全体で動作します。 例 1 コードは次のとおりです...