Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 避免额外的类实例化是否有好处?_Php_Refactoring_Dry - Fatal编程技术网

Php 避免额外的类实例化是否有好处?

Php 避免额外的类实例化是否有好处?,php,refactoring,dry,Php,Refactoring,Dry,下面是一些使用Zend Form API创建表单和创建子表单(也称为字段集)的代码 AnnotationBuilder类似乎没有与其关联的\u构造,因此实例化新的AnnotationBuilder对象是一项轻量级操作 也就是说,我认为可以保留以下代码: $form = (new AnnotationBuilder())->createForm(CustomForm::class); $form->add((new AnnotationBuilder())->createForm

下面是一些使用Zend Form API创建表单和创建子表单(也称为字段集)的代码

AnnotationBuilder
类似乎没有与其关联的
\u构造
,因此实例化新的
AnnotationBuilder
对象是一项轻量级操作

也就是说,我认为可以保留以下代码:

$form = (new AnnotationBuilder())->createForm(CustomForm::class);
$form->add((new AnnotationBuilder())->createForm(CustomFieldset1::class));
$form->add((new AnnotationBuilder())->createForm(CustomFieldset2::class));
是否需要重构上述代码,或者保持原样安全吗?就性能而言,我认为除了几个额外的对象实例化之外,不会有任何重大的损失


例如,作为一种替代方法,我正在考虑创建一个变量来保存一个
新的AnnotationBuilder()
,作为本地或类范围,然后根据需要重用该变量。但我并不认为这样做有什么好处。

我不认为你有理由不使用
$builder=newannotationbuilder()

实例化构建器只会浪费几微秒的时间。可能
AnnotationBuilder
有一些内部逻辑,可以对表单中的某些元素进行性能优化,例如使用某种属性缓存,例如

我不建议反复创建任何对象,直到您真正想要获得一个新对象。

new AnnotationBuilder()
构造一个新对象。这需要记忆——多少并不重要。如果您热衷于(微观)优化,您希望避免这种情况。除非构建新对象需要它。