猿问

php 类方法用static::hello(); 等同于 $this->hello();吗?

今天在写代码的时候,我类在里里本想调用一个方法,默名其妙的写了一个 static, 然后再打了个:: 发现后面出现了我类的方法!突然发现还可以这样?我本是想要$this->xxx();的结果成了 static::xxx();但是我执行代码发现一样可以调用,一样没有错误出现!但在网上找static 都是说静态属性 静态方法!以前调用的时候要么都是self::xxx();要么$this->xxx();突然发现static::xxx();也可以。但没有找到详细的说明!有人能解释一下吗?

class Message
{

    public function sendMessage() {
        echo 132;
        static::doMessage();
        self::doMessage();
    }

    public function doMessage() {
        echo 332;
    }
}
慕码人8056858
浏览 515回答 5
5回答

倚天杖

请看鸟哥的博客 PHP的Calling Scope

慕容森

弱语言了解下

holdtom

把这边改一下就可以调用:class Message{ public function sendMessage() { echo 132; static::doMessage(); self::doMessage(); } public static function doMessage() { echo 332; } } self::xxx();$this->xxx(); 这是2种调用 方法的方式。static 方法里不能有 $this 根据你实际需要去定义你的function 是 static 还是非 static然后使用对于的调用方式
随时随地看视频慕课网APP
我要回答