php中的抽象类调用自己的静态方法($ this vs self)

时间:2015-09-25 01:53:12

标签: php static this abstract self

当我调用自己的静态函数时,我想知道抽象php类中哪个关键字是正确的。

这是简化的代码,我测试了两个关键字 - 两者都有效,但哪一个在技术上是正确的?

<?php
abstract class B extends A{
    function a(){
        self::b("test"); //'self::' vs '$this->'
    }

    static function b($string){
        echo "test";
    }
}
?>

据我所知,如果函数是静态的,它应该在自己的类中使用self来调用静态函数。抽象意味着没有该类的实例,所以即使它没有警告也没有$这是无效的吗?

由于

这个问题与可能的重复不同,因为我使用的抽象类不能拥有自己的实例。我理解self和this之间的区别,但在这个特定情况下使用哪一个是我试图找出的,因为两种情况都有效。

1 个答案:

答案 0 :(得分:1)

使用self,无论班级是abstract,都是一样的。 $this用于类的实例,如果已经通过具体的子类实例化,它也可以在abstract类中使用。

相关问题