首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP类内部调用静态方法时,有没有理由使用self::而不是static::

问在PHP类内部调用静态方法时,有没有理由使用self::而不是static::
EN

Stack Overflow用户
提问于 2021-07-29 22:20:20
回答 1查看 47关注 0票数 1

如果类的静态函数可以被扩展类覆盖,并且从类内部调用静态方法,则static::提供后期绑定是必须的。但是在类不能被扩展的情况下(例如,它是最终的),那么使用static::也是错误的吗?

另一种方式来问同样的问题,当调用静态方法时,使用static::或self::的经验法则应该是什么,或者使用static::有这么大的缺点,应该只在严格需要的时候使用它?

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 19:38:09

在最终的类中,它们之间没有区别,所以请使用您想要的任何一个。

两个调用都将返回A。

代码语言:javascript
复制
<?php

class Dad {
    static function getStatic() {
        return new static;
    }
    
    static function getSelf() {
        return new self;
    }
}

trait Useless {
    static function getStatic() {
        return new static;
    }
}

final class A extends Dad {
    use Useless;
    
    static function getSelf() {
        return new self;
    }
}

var_dump(A::getStatic()::class);
var_dump(A::getSelf()::class);

Example

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68577678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档