PHP通过static关键词实现静态调用绑定

代码如下所示

class A
{
    
    
	public static function who(){
    
    
		echo __CLASS__;
	}
	public static function test(){
    
    
		self::who();
	}
}
class B extends A
{
    
    
	public static function who(){
    
    
		echo __CLASS__;
	}
}

echo B::test();   //输出 A

当我们打印B::test()的时候。此时输出的是A,其实我们想要的是B。那该怎么办呢?
只需要修改下self::who()的值为static::who()。修改后的A的类的详情如下:

class A
{
    
    
	public static function who(){
    
    
		echo __CLASS__;
	}
	public static function test(){
    
    
		static::who();
	}
}
class B extends A
{
    
    
	public static function who(){
    
    
		echo __CLASS__;
	}
}

echo B::test();   //输出 B

这样做的好处是,可以共用一系列提前定义好的方法,同时在实际调用的时候,又将结果或过程只作用于自己,从而实现了一个典型的Active Record设计模式。

猜你喜欢

转载自blog.csdn.net/u013866352/article/details/108364015