在这个 StackOverflow 问题中,我了解到(在 PHP 中)self::
不支持继承。static::
在类中定义一堆常量时,如果您想在子类中覆盖这些常量以更改默认“行为”,则有必要使用static::
以便父类上引用常量的方法尊重“覆盖”。
自从我提出那个原始问题以来的 2 年里,我已经开始static::
广泛使用,以至于我很少使用,self::
因为self::
这似乎会限制使用常量的类的可扩展性,而static::
没有这个限制。
即使我目前不打算在子类中覆盖一个常量,我最终也会使用static::
,以防万一 - 所以我以后不必做一堆搜索和替换,如果结果证明我将要扩展类并覆盖常量。
但是,在其他人的代码中,我很少看到static::
. 直到 2012 年,我什至都不知道它的存在。那么,为什么在理所当然地使用static::
代替不是一种普遍的做法呢?self::
那么,我的问题是:static::
与self::
? 我在这里使用粗暴的反模式是否有罪?