PHP的静态变量、成员、方法
使用static关键词定义static变量 方法等。
比如
public/protected/private static $a = 1;
public/protected/private static function funname(){};
使用双冒号作为作用域限定操作符,self::$a self::funname(); 而不是$this。
因为$this指的是类实例 而selft::指的是类本身。
static::延迟静态绑定
<?php
class classA {
public static $a = 'a';
public static function funTest()
{
echo 'A';
}
public function run()
{
echo self::$a,self::funTest(),$this->funTest(); //aAB
//echo static::$a,static::funTest(),$this->funTest(); //bBB
}
}
class classB extends classA {
public static $a = 'b';
public static function funTest()
{
echo 'B';
}
// public function run()
// {
// echo self::$a,self::funTest(),$this->funTest();
// }
}
$bObject = new classB();
$bObject->run();
静态方法和静态变量在被继承后不会被实例覆盖修改。self可以调用基类中申明的方法,但是它总调用的是扩张类已经重写的方法。如果扩张类中没有重写,则调用的是还是父类或者是基类中,本类定义的变量和方法。
static::是在PHP6中出现的 它的作用域是取被扩张类覆盖的static变量和方法。它可以在子类中调用父类的静态方法。
parent::作用域操作符 指向的是扩张类父类的变量和方法。

浙公网安备 33010602011771号