我在一个专有项目上工作,这个项目使用了很多这种或那种形式的工厂。他们中的大多数不会按名称实例化类,但是,是否使用new self()
或new static()
来实例化取决于开发人员。我应该使用新的自我还是新的静态?
我意识到了这种差异,但是我很好奇,如果对于哪一种方法是“正确”的方式去解决迟滞静态绑定在技术上没有要求的话,我很好奇。例如,new static()
经常在服务类中找到,几乎肯定不会被分类。这在抽象类中显然很重要,但是我的偏好是使用new self()
,我不希望子类。
,解决技术问题的区别:
我很好奇:
- 是否有性能打到使用晚期静态绑定?
- 采用一种做法是否会影响代码维护?例如。如果我使用
new self()
继承一个类,我必须重写/更改所有这些情况,但如果我的构造函数更改,那也许这不是一件坏事。 - 有没有记录在这方面的最佳做法?我们至少在理想情况下使用PSR-2,但我不认为它涵盖了这一点。
对于问题1(是否有性能问题),请通过将其安装1M次或类似的方法来对您的某些实际类别进行基准测试。 –