<?php
class A {
public $attr = 1;
public static function g()
{
echo (new A())->attr;
}
}
//先new一个对象,重复调用5次。全程只new了一次对象
$a = new A();
echo $a->attr;
echo $a->attr;
echo $a->attr;
echo $a->attr;
echo $a->attr;
//静态调用,重复调用5次,每次在静态方法里new一次对象
A::g();
A::g();
A::g();
A::g();
A::g();
这两种哪个效率跟高,是一样的吗,只是写法不同而已。
时间方面:考虑到每次new对象的开销
内存方面:考虑到每次new对象占用内存,不过方法里new对象,方法结束后也会被垃圾回收,不影响吧
你这种场景就没区别了,无论如何都会
new
来开辟新的内存空间。但这种场景很奇葩啊,为什么要这么写?