php后期静态绑定 自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类. 虽然也可以调用非静态方法,但是不会在运行时绑定. static 不再只是简单的静态修饰关键字.而是可以像下面这样调用类的静态方法,非静态方法,为什么静态非静态要分开说呢,因为调用的效果是不一样的. <?php class A { public static function who () { echo __CLASS__ ; } public static fun…
先说一下__CLASS__,get_class() , get_called_class() 区别: __CLASS__获取当前的类名, get_class()与上面一样,都是获取当前的类名, get_called_class()获取当前主调类的类名.参考程序: class A { public function say() { echo 'a is called by'.__CLASS__.'<br/>'; echo 'a is called by'.get_class().'<br…
<?php class test{ //创建test类 public function __construct(){ static::getinfo(); //后期静态绑定 } public static function getinfo(){ echo '实例化一个test类的对象<br />'; } } class test1 extends test{ //创建继承自test类的test1类 public static function getinfo(){ echo '实例化一个…
<?php class test{ //创建test类 public function __construct(){ self::getinfo(); //后期静态绑定 } public static function getinfo(){ echo '实例化一个test类的对象<br />'; } } class test1 extends test{ //创建继承自test类的test1类 public static function getinfo(){ echo '实例化一个te…
在我们以往中,在类中使用self关键字的时候都是指向了被调用方法定义时的类,而非原始的调用类. 例如: class Animal{ static $IQ_lv_avg = 1; public static function myiqlvavg(){ echo self::$IQ_lv_avg.PHP_EOL; } public static function test(){ self::myiqlvavg(); } } class Dog extends Animal{ static $IQ_l…
案例分析 先前的PHP项目中,看到类似于以下的一段代码: <?php class DBHandler { public function get() { } } class MySQLHandler extends DBHandler { // 这里一个create public static function create() { echo "MySQL"; return new self(); } public function get() { echo "MySQ…