2009-12-29 59 views
3

仍然在PHP-OOP的訓練輪上,這個問題可能屬於failblog.org。 =)PHP方法鏈接好處?

PHP中的方法鏈接有什麼好處?

我不確定這是否重要,但我會靜態調用我的方法。例如

$foo = Bar::get('sysop')->set('admin')->render(); 

從我讀過,允許被鏈接返回$this任何方法。我剛剛瞭解到這是PHP5中的新功能。對我來說,如果我不必實例化一個全新的對象(靜態地調用它)並從類中選擇我需要的幾個方法,那麼可能會帶來速度上的好處?

我有這個權利嗎?

+0

它被稱爲「流暢的界面」,它不是新的,它顯然沒有在PHP5之前工作 http://devzone.zend.com/article/1362 – CaffGeek 2009-12-29 19:51:50

+0

現在可以使用了嗎?可愛!不知道。 – 2009-12-29 19:54:39

回答

6

使用這兩種方法都沒有顯着的性能優勢,特別是在具有字節碼緩存的生產服務器上。

方法鏈只是寫東西的一種較短的方式。與更長的版本比較:

$foo = Bar::get('sysop'); 
$foo -> set('admin'); 
$foo -> render(); 

它確實有一些怪癖,但:典型的IDE(如Eclipse)在較長的版本可以自動完成你的代碼(只要$foo類型是已知的)但需要您記錄所有方法的返回類型才能在短版本中使用。

0

它仍然實例化一個對象;它只是從來沒有分配給一個變量。基本上,你只是調用一個匿名對象的方法。

我認爲,任何週期,節省將是微不足道的,但我認爲,未分配的對象將立即這行代碼之後被釋放,所以你可能有一些節省內存(可以通過分配的對象設定爲null時完成同樣的你完成了他們)。

人們使用方法鏈接的主要原因是爲了方便;你在一行代碼中做了很多。就我個人而言,我認爲這是混亂和不可維護的。

0

如果我沒有實例化一個整體 新的對象(稱之爲靜態)和 只需選擇幾個方法,我需要從類 ?

錯!要返回$this,該類必須實例化。

+0

你每天都會學到新的東西。大聲笑 – Jeff 2009-12-29 20:19:41

+0

很高興我可以幫助:) – AntonioCS 2009-12-29 20:59:43