PHP类在多个声明上的性能

时间:2016-07-05 15:58:05

标签: php performance class

我们说我有一个名为Foo的庞大班级。 如果我必须在不同的课程中多次调用此类,使用它的最佳方法是什么?

注意: Bar不是唯一使用Foo的类。

选项#1(在需要时创建对象):

class Bar
{
    public function myMethod($arg)
    {
        $foo = new Foo();
        $something = $foo->doSomething($arg);

        return $something;
    }
}

选项#2(创建一次):

class Bar
{
    protected $foo;

    public function __construct()
    {
        $this->foo = new Foo();
    }
}

选项#3(使Foo静态):

class Bar
{
    public function myMethod($arg)
    {
        return Foo::doSomething($arg);
    }
}

选项#4:

//告诉我正确的方法

1 个答案:

答案 0 :(得分:1)

我要说的最好的方法是在Foo类之外实例化Bar并将其作为依赖项注入 - 最好的方法是通过构造函数:

class Bar
{
    private $foo;

    public function __construct(Foo $foo)
    {
        $this->foo = foo;
    }
}

$foo = new Foo();
$bar = new Bar($foo);

然后对所有以Foo作为依赖项的类执行相同操作。如果实例合适,您可以重复使用该实例,或者如果需要,您可以创建一个新实例。