为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕码人8056858 2019-03-07 21:43:19
今天在写代码的时候,我类在里里本想调用一个方法,默名其妙的写了一个 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; } }
查看完整描述

5 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

请看鸟哥的博客
PHP的Calling Scope

查看完整回答
反对 回复 2019-03-18
?
慕容森

TA贡献1853条经验 获得超18个赞

弱语言了解下

查看完整回答
反对 回复 2019-03-18
?
holdtom

TA贡献1805条经验 获得超10个赞

把这边改一下就可以调用:
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
然后使用对于的调用方式

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 514 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信