静态的变量或者是函数是保存的静态内存中的,只有到程序结束时才会被释放,那他是什么时候赋值的呢
如果类中调用一次,静态类在编译的时候需要多做工作,动态类在执行的时候需要多做工作,然而php是动态语言,每一次这两步都不掉,所以对于只运行一次的类,无所谓谁快谁慢。
但是如果一个类在程序当中要多次调用就不一样了,静态类是编译的时候就赋值了,程序之后的运行都可以直接调用过来,而不用动态的分配内存了,就节约了时间,这就是为什么静态类比动态类快的原因(前提是调用多次记得)。
class A
{
public static $a;
public $b;
public function __construct($a=1,$b=2)
{
self::$a = $a;
$this->$b = $b;
}
public static function func_static()
{
echo ‘func_static‘.PHP_EOL;
echo $this->b;//报错,不能使用$this关键字,不能调用
echo self::$a//正常
}
public function func()
{
echo ‘func‘.PHP_EOL;
}
}
A::func_static();//正常
A::func()//报错
$obj = new A();
$obj ->func();//正常
总结:
1.静态声明使用 static 关键字
2.调用静态变量或静态方法不需要实例化类
3.在类中调用静态变量使用 self ::
4.在静态方法中不能使用关键字 $this
原文:https://www.cnblogs.com/baboben/p/12032611.html