PHP の変数のスコープは、スーパー グローバル (ローカル スコープで直接使用できる特殊なタイプのグローバル変数)、グローバル、ローカル、および静的 (特殊なタイプのローカル変数) に分類できます。グローバル変数は実際には、unset が明示的に解放されない場合、ローカル静的変数はローカル静的関数変数 (関数内で宣言された静的変数) に分割できます。ローカル静的メンバー変数 (クラス内で宣言され、すべてのクラス インスタンスによって共有される静的属性)
ローカル静的変数は、スクリプトの実行が終了するまで自動的には解放されません
スーパー グローバル変数: これらは、PHP に組み込まれています $_FILES
$_SESSION (永続ストレージ)
$_COOKIE (永続ストレージ)
$_REQUEST
$_ENV : 宣言された変数は、クラス、関数、if などの言語構造内にありません。クラス、関数、if などの言語で内部使用する場合は、キーワード global または super を使用する必要があります。グローバル変数 $GLOBALS
静的変数: 関数内でキーワード static を使用して宣言された変数。
ローカル変数: クラス、関数、if/while/for などの構造ステートメント内で宣言された変数。 .
1.globalキーワードと$GLOBALSインスタンス
コードをコピー
コードは次のとおりです:
$a = 0;
function foo()
{
global $a;
echo $ a;}function foo2()
{
echo $GLOBALS['a'];}2. 静的変数と通常のローカル変数の違いの例
コードをコピーします
コードは次のとおりです:
function foo1()
{
$var = 0;
$var++;
return $var;
}echo foo1();
echo foo1();
//出力はすべて1ですfunction foo (){ static $var = 0; $var++;
return var;
}
echo foo();
echo foo();
//出力1 1 回目は 2、2 回目は 2 です
3. static キーワードは静的プロパティと静的メソッドも宣言できます
静的プロパティはクラス インスタンスではなくクラスによってのみ呼び出すことができます
$this は静的メソッドでは使用できません。 self を使用してクラスの静的プロパティにアクセスできます
静的変数を理解するための別のコード:
コードをコピーします
コードは次のとおりです:
class t{
static $v = 10; static $ var = 10; $v++; br>n";
}}
$o1 = new t();
$o1->a();//出力 11
$o2 = new t();$o2-> a() ;//出力 12t::aa();//出力 11$o1->aa();//出力 12$o2->aa();//出力 13
上記のコードから、クラス メンバー メソッドに静的変数がある場合、それらが異なるクラス インスタンスであっても、この静的変数はクラスの静的メンバー変数ではありませんが、この静的変数を共有することがわかります。混乱しています。
http://www.bkjia.com/PHPjc/740659.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/740659.html
技術記事
PHP の変数のスコープは、スーパー グローバル (ローカル スコープで直接使用できる特殊なタイプのグローバル変数)、グローバル、ローカル、静的 (特殊なタイプのローカル変数) に分類できます。PHP では...