账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php 类方法用static::hello(); 等同于 $this->hello();吗?
    29
    0

    今天在写代码的时候,我类在里里本想调用一个方法,默名其妙的写了一个 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;
        }
    }
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 曾爱曾喜曾忧伤 普通会员 1楼

      是的,static::hello();$this->hello(); 在 PHP 中是等价的。

      static::hello() 是 PHP 中的一个静态方法,它是在类级别上定义的方法,而 $this->hello() 是在类实例上定义的方法。在类级别上定义的方法是私有的,只能在类的内部访问。而在类实例上定义的方法是公有的,可以在类的外部访问。

      因此,如果你需要在类的外部访问类的私有方法,你可以使用 $this->hello();。如果你想在类的内部访问类的公有方法,你可以使用 static::hello();

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部