php 后期静态绑定

2019-6-5 hubo php开发

PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类,这个是php官方的解释,即在类的继承过程中,使用的类不再是当前类,而是调用类。后期静态绑定使用关键字static来实现,通过这种机制,“static::”不在解析为定义当前方法所在的类,而是在实际运行时计算得到的,即运行时最初调用的类。虽然将其称之为“后期静态绑定”,但它不仅限制于静态方法的调用。

请看下面的实例:



<?php
class A{
	public static function call(){
		echo "class A<br/>";
	}
	public static function test(){
		self::call();
		static::call();
	}
}
class B extends A{
	public static function call(){
		echo "class B";
	}
}
B::test();

class A
class B


通过上面的代码可以看到,在调test方法的时候,“self::”是直接调用本类的方法,static 是根据调用test方法的类来决定的“static::”的值,因此static的值只有在调用时才能确定下来,而self则是在定义是就确定下来。需要注意的是static并不限于静态方法.

网站备案号:京ICP备11043289号-1 北京市公安局网络备案 海1101084571
版权所有 北京育灵童科技发展有限公司 Copyright © 2002-2024 www.elight.cn, All Rights Reserved