后期静态绑定技术动态设置静态成员的调用者

Original 2019-02-22 11:21:15 264
abstract:<?php //后期静态绑定 //使用在静态继承的上下文环境中 //动态匹配静态成员的刁雍者,而不是声明者 //静态方法与调用者的绑定在运行阶段才可以确定 class Father { public static $money=5000; public static function getClass(){ //返回当前类
<?php
//后期静态绑定
//使用在静态继承的上下文环境中
//动态匹配静态成员的刁雍者,而不是声明者
//静态方法与调用者的绑定在运行阶段才可以确定

class Father
{
	public static $money=5000;
	public static function getClass(){
		//返回当前类名
		return _CLASS_;
	}
	public static function getMoney(){
		//return self::getClass() .'=>' .self::$money;
		//使用在静态继承的上下文环境中,动态设置静态成员的调用者  (Son),允许子类的成员覆盖父类的相同成员
		return static::getClass() .'=>' .static::$money;
	}
}
class Son extends Father
{
	//覆写父类的静态属性
	public static $money=3000;
	public static function getClass(){
		//返回当前类名
		return _CLASS_;
	}
	
}
echo Father::getClass(),'<br/>';
echo Father::getMoney(),'<br/>';

//调用子类
echo Son::$money,'<br/>';
echo Son::getClass(),'<br/>';
echo '<hr/>';
//值还是父类的值,而不是自己重写的值
//目的:展示自己覆写的值,这时需要把getMoney()里面的self改成static,动态设置静态成员的调用者
echo Son::getMoney(),'<br/>';

?>


Correcting teacher:韦小宝Correction time:2019-02-22 11:56:31
Teacher's summary:写的还是很不错的 这种技术要和实际的案例来进行结合 这样才能掌握的更快

Release Notes

Popular Entries