php 静态和对象区别

<?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对象,方法结束后也会被垃圾回收,不影响吧

阅读 1.7k
2 个回答

你这种场景就没区别了,无论如何都会 new 来开辟新的内存空间。

但这种场景很奇葩啊,为什么要这么写?

新手上路,请多包涵

之前好像看过一篇文章说,这两种用法效率都差不多,只是应用场景不一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题