2011-11-18 55 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次並直接使用返回值是完全可以的。

做什麼使你的代碼更有意義,如果你有一個變量名,而不是讀取一個變量名和一個函數名,通常代碼更容易閱讀。但這是你的選擇。