2009-12-21 90 views
3
require_once('Class.php'); 
$myArray = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); // etc 

這是正確嗎?在循環中實例化新類或不在循環中?

foreach($myArray as $key => $val) { 
    $class = new Class(); 
    $result = $class->someMethod($val); 
} 

$class = new Class(); 
foreach($myArray as $key => $val) { 
    $result = $class->someMethod($val); 
} 

編輯更具體,使用http://simplepie.org/wiki/reference/simplepie/get_items

$aFeeds = array(rssFeed1,rssFeed2,rssFeed3,...); 
foreach($aFeeds as $key => $feedURL) { 
    $feed->set_feed_url(feedURL); 
    $feed->init(); 
    $feed->get_items(0, 5); 
} 

回答

5

簡短回答:這取決於。

龍答:如果重複實例改變執行的結果,然後創建一個類只有一次的循環之外。

如果重複實例化確實更改執行的結果,那麼在循環內創建類實例是合適的實現。

這些是真的,這完全取決於你的課程是如何寫的。我敢打賭,你不需要每次迭代都重新實例化這個類,但這純粹是推測性的。

1

沒有正確,並沒有太大就會出問題在兩種情況下。我假設他們在功能上是等效的,因爲Class似乎沒有狀態。

1

我真的不能說,除非我看到someMethod做什麼。如果它是純粹的功能,那麼第二個樣本可能是會更快。如果它以某種方式影響集體成員,那麼這兩個人就有可能導致不同的結果。但他們都不是'錯誤'。

1

最有可能的第二個。但這取決於你想要做什麼。

如果你想每次在同一個對象實例上調用someMethod(這是可能的情況),那麼第二種方法是正確的。第二種方法也是可取的,如果無論每次是否是相同的實例都無關緊要。

只有當你想讓它調用不同的實例每次應該使用第一種方法。

0

後者 - 它將提高性能,因爲該類僅實例化一次。就國家而言(查看其他答案),只需嘗試一下並比較結果即可。