以下は、静的変数は通常の変数である静的なキーワード、非静的変数の接頭辞があります。
通常の静的変数:
1.ローカル変数は自動的に機能の完了時にリリースされますが、静的ローカル変数の宣言が解除されないだろうと、そのライフサイクルは、ブロック内のグローバルな可視性です。
2.静的変数は、最後の値は、呼び出されたセーブ宣言であること、一度だけ初期化されます、したがって、静的ローカル変数はグローバル変数として使用することができます。
この例の出力は0,1,2でした
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
第二に、静的メンバ変数:
1.静的データメンバ変数:
コードは、次のように:人のクラス、年齢変数の静的データメンバ変数を定義します。
1.変数名2.クラス名:: ::オブジェクト名オブジェクト名:アクセス静的変数への2つの方法
ので、静的メンバ変数は、クラスの一部であり、どのオブジェクトにも属していないあなたは、オブジェクト間で情報を共有することができ、オブジェクトの異なるインスタンスが変更されたオブジェクトの静的変数、静的変数、別の静的オブジェクトへのアクセスでアクセスされます変数の値も変化します。
最高の静的関数を使用して静的データへのアクセス。非静的メンバ変数の関数を使用して静的データにアクセスするときに、非インライン関数呼び出しであるべきである、すなわち本体は、クラスのインビトロでのクラス定義された関数を宣言しました。
2.静的関数のメンバ変数:
データ変数のメンバーの基本的な性質は基本的に同じである、それは、オブジェクトと静的な機能を備えたアクセス非静的データへの必要性は、クラス名にアクセスすることができますので、それは、静的な機能で最高のないアクセス非静的データであることは注目に値します。するために、アクセス非静的データへの非静的関数を使用します。
次の例では、$取り除か他の言語へのアクセスPHPの例です。
<?php
class Person{
static $age = 10;
static function des(){
//self:指的是当前的类 $this指的是当前的实例对象
echo "<hr>".self::$age;
}
//构造方法
function __construct(){//只要创建对象,构造方法就会自动执行
echo "对象创建";
}
function __destruct(){//默认程序执行完成后调用析构方法
echo "死亡方法";
}
}
//1.实例化两个对象per1,per2
$per1 = new Person();
$per2 = new Person();
//2.访问静态变量的两种方式:
//1.通过类访问静态变量 ---------
echo Person::$age;
//2.直接通过实例对象访问常量--------
echo $per1::$age;
//3.不同实例对象所访问的静态变量是同一个(共享)
echo $per1::$age;//输出10
echo $per2::$age;//输出10
//所以在一个对象中修改静态变量,别的对象访问的静态变量值也发生改变
$per2::$age=100;
echo $per1::$age;//输出100
//4.释放内存
$per2 = null;
//5.调用静态方法:静态方法不会每个实例都去初始化,类似于原型方法
Person::des();
?>