我正在转换PHP 5.3库以在PHP 5.2上工作.支持我的主要方法是使用后期静态绑定return new static($options);
,如果我将其转换为return new self($options)
将得到相同的结果?
new self
和之间有什么区别new static
?
我在一些框架中看到了这行代码:
return new static($view, $data);
Run Code Online (Sandbox Code Playgroud)
你怎么理解的new static
?
我从事一个专有项目,该项目使用了很多种形式的工厂.他们中的大多数不通过名称实例化类,幸运的是,但是否new self()
还是new static()
用于实例取决于开发商变化.
我知道不同之处,但我很好奇是否有一些共识,即当技术上不需要后期静态绑定时哪一个是"正确"的方法.例如,new static()
经常在服务类中找到几乎肯定永远不会被子类化的服务类.它在抽象类中显然很重要,但我的偏好是使用new self()
我不期望子类的地方.
解决技术差异的问题:
我很好奇:
new self()
,我必须覆盖/更改所有这些情况,但如果我的构造函数更改,这可能不是一件坏事.