/** * 父类P中 获取子类C的类名 */ class P { public static function getParent() { return self::class; }
public static function getChild() { return static::class; }
public function getClassName(){ echo __CLASS__; // 获取当前的类名 }
public function getThis(){ var_dump($this); } }
class C extends P {
}
echo C::getParent(), PHP_EOL; // P echo C::getChild(), PHP_EOL; // C echo (new C())->getClassName(), PHP_EOL; // P echo (new C())->getThis(), PHP_EOL; // C /* 总结: * 1.在 PHP 里,在没有继承时候,你用self::class 和 static::class是一样的,都是获取当前类名。 * 2.如果用到了继承,并且这个方法写在了父类里,你想要分别获取当前父类名和未知的子类名,就要按照下面的方法进行获取。 * 在 PHP 类中,self指向的是当前方法存在的这个类,也就是父类。static指向的是最终那个子类 * 3.this也有static的效果,只不过区别一个是非静态一个是静态 */
|
请发表评论