当我调用自己的静态函数时,我想知道抽象php类中哪个关键字是正确的。
这是简化的代码,我测试了两个关键字 - 两者都有效,但哪一个在技术上是正确的?
<?php
abstract class B extends A{
function a(){
self::b("test"); //'self::' vs '$this->'
}
static function b($string){
echo "test";
}
}
?>
据我所知,如果函数是静态的,它应该在自己的类中使用self来调用静态函数。抽象意味着没有该类的实例,所以即使它没有警告也没有$这是无效的吗?
由于
这个问题与可能的重复不同,因为我使用的抽象类不能拥有自己的实例。我理解self和this之间的区别,但在这个特定情况下使用哪一个是我试图找出的,因为两种情况都有效。
答案 0 :(得分:1)
使用self
,无论班级是abstract
,都是一样的。 $this
用于类的实例,如果已经通过具体的子类实例化,它也可以在abstract
类中使用。