self与static区别
- 在PHP中,调用一个静态变量,我们既可以使用self也可以使用static,结果也许都是我们期望的,但是,有时候并不是我们所想的那样,static和self的区别还是很大的,下面我们进行代码来进一步说明它们之间的区别。
<?php
class Boo {
protected static $str = "This is class Boo";
public static function get_info(){
echo get_called_class()."<br>";
echo self::$str;
}
}
class Foo extends Boo{
protected static $str = "This is class Foo";
}
Foo::get_info();
?>
//结果:This is class Boo
码来进一步说明它们之间的区别。
<?php
class Boo {
protected static $str = "This is class Boo";
public static function get_info(){
echo get_called_class()."<br>";
echo static::$str;
}
}
class Foo extends Boo{
protected static $str = "This is class Foo";
}
Foo::get_info();
?>
//结果:This is class Foo
- 发现结果不是我们预期的那样,为什么呢?
- self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类,例子比较容易明白些。