ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルの変数の型とスコープの詳細な説明

PHP_PHP チュートリアルの変数の型とスコープの詳細な説明

WBOY
WBOYオリジナル
2016-07-13 10:36:06678ブラウズ

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

tru​​e

http://www.bkjia.com/PHPjc/740659.html

技術記事

PHP の変数のスコープは、スーパー グローバル (ローカル スコープで直接使用できる特殊なタイプのグローバル変数)、グローバル、ローカル、静的 (特殊なタイプのローカル変数) に分類できます。PHP では...





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