Tom*_*ger 5 php static constants self late-static-binding
在这个 StackOverflow 问题中,我了解到它self::不是继承感知的static::(在 PHP 中)。当涉及在类中定义一堆常量时,如果您想覆盖子类中的这些常量以更改默认的“行为”,则必须使用static::父类中引用该常量的方法,从而尊重“覆盖”。
自从我提出这个原始问题以来的 2 年里,我已经开始static::广泛使用,以至于我很少使用,self::因为self::这似乎限制了使用常量的类的可扩展性,而static::没有这种限制。
即使我不目前打算常数被覆盖在一个子类,我最终使用static::,以防万一-所以我没有做一堆的以后的搜索和替换,如果事实证明我将要扩展类并覆盖常量。
但是,在其他人的代码中,我很少看到static::. 直到 2012 年,我什至不知道它的存在。那么,为什么不是理所当然地使用static::代替的普遍做法self::呢?
我的问题的话,就是:是否有任何明显的缺点,使用static::了指的类的常量,而不是self::?我是否因为在这里使用了严重的反模式而感到内疚?
实际上这仅取决于您需要的用途。如果您需要访问调用它的类的常量,请使用self. 如果您需要后期静态绑定,请使用static.
从性能的角度来看,self两者static相当。
另请注意,广泛使用静态组合来覆盖/继承并不是一个好主意。
为了直接回答你的问题,我总是更喜欢使用 来static进行测试(尽管现在 PHPUnit 4 删除了对模拟静态方法的支持)。
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |