代码如下所示
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设计模式。