2011-11-18 56 views
1

我想知道它是否更有效地直接访问类变量而不是间接访问,即通过类方法。PHP间接对象访问效率

例如我有以下的(伪)代码:

class foo { 

    private $some_object;  

    public function __construct(){ 

     $this->some_object = new someObject();  
    } 

    public function getSomeObject(){ 

     return $this->some_object;  
    } 

} //end of class foo 

第一接入方法使用所存储的对象,并直接访问存储

$f   = new foo(); 
$storedObject = $f->getSomeObject(); 

for (loop 10 times) { 

    print $storedObject->getSomeProperty(); 

} 

该目的的第二方法访问经由$f->some_objectgetSomeObject()方法

$f   = new foo(); 

for(loop 10 times){ 

    print $f->getSomeObject()->getSomeProperty(); 

} 

我知道PHP通过引用返回对象,但方法2对我来说效率更低,或者他们都是一样的?

+3

第一个更快,但如果你会注意到我的差异,我不得不说恭喜,你可能已经有第二个Facebook运行了(也就是说,不要为这样的优化而烦恼,只在你'有性能问题)。 – deviousdodo

+0

谢谢,这从清晰的编码角度来看是有道理的。它还能让我避免跟踪创建的额外变量的头痛 – PowerAktar

回答

0

在PHP中,对象是按值返回的。该值表示当时的对象(对象标识符值)。

除此之外,存储函数的返回值并使用它10次而不是调用函数10次并直接使用返回值是完全可以的。

做什么使你的代码更有意义,如果你有一个变量名,而不是读取一个变量名和一个函数名,通常代码更容易阅读。但这是你的选择。