2012-10-22 31 views
1

我很好奇爲OOP問題獲得答案,但到目前爲止找不到任何信息。PHP OOP性能:參數或實例變量?

在這裏,編寫類和方法是爲每個方法傳入參數或使用實例/字段變量和$ this-> x;

運行時哪個會更快?

class ExampleByParameter(){ 

function SomeMethod($a,$b){ 
echo $a." ".$b; 
return; 
} 

} 

class ExampleByInstance(){ 

function __construct($a,$b){ 
$this->a=$a; 
$this->b=$b; 
} 

function SomeMehtod(){ 
$a=$this->a; 
$b=$this->b; 
echo $a." ".$b; 
return; 
} 

} 

我會想象他們將與以上,但即時通訊思想的例子沒有差別可能有更復雜的代碼顯著差異。

+3

這將是一個微觀優化充其量。不要專注於它。 –

+2

想想可用性:如果在另一個功能中需要$ a和$ b,該怎麼辦?你每次都會在參數中傳遞它?它是程序性的,而不是OOP –

+0

與ExampleByParameter相比,ExampleByInstance可能更快。 –

回答

6

性能差異可以忽略不計。你應該真正決定哪種模式最適合你的班級結構。

您的班級是否依賴於$a$b才能正常運行?把它們放在構造函數中。

SomeMethod是公開的嗎?它提供的變量超出了返回的值嗎?如果是這樣,請將它們保存爲參數。

在大型項目中,您將從精確的課程設計中獲得更多收益,而對性能的改善則微不足道。

+0

感謝您提供的信息,我想知道是否有明確的贏家,但是在設計您的課程時似乎還有更多需要考慮的事情。 – cosmicsafari