PHP this、self与static的区别


/**
* 父类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的效果,只不过区别一个是非静态一个是静态
*/

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM