码迷,mamicode.com
首页 > Web开发 > 详细

PHP延迟静态绑定

时间:2015-01-10 16:33:05      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

php5.3已经开始支持延迟静态绑定。

延迟静态绑定指的是在父类中获取子类的最终状态。在父类中,如果出现self关键字,被子类继承后,这个self值的还是父类而不是子类。

如果在父类中出现了self关键字,并且子类继承了含有self的这段代码,那么需要考虑静态延迟绑定。在父类中使用static代替self

如下例:

<?php 
class A{
	public static $a=1;
	public function test(){
		echo self::$a;//自身的属性a
	}
}

class B extends A{
	public static $a = 2;
}

$m = new B();
$m->test();//最终输出了1,也就是父类的属性a

?>

  要想在父类中test方法中实现取到子类本身的属性a,需要用static代替self

<?php 
class A{
	public static $a=1;
	public function test(){
		//echo self::$a;
		echo static::$a;//延迟静态绑定,绑定到子类
	}
}

class B extends A{
	public static $a = 2;
}

$m = new B();
$m->test();//输出子类中的2

?>

  

PHP延迟静态绑定

标签:

原文地址:http://www.cnblogs.com/taijun/p/4214986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!