4
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);
}
4

5 に答える 5

5

短い答え:それは依存します。

長い答え:インスタンス化を繰り返しても実行結果が変わらない場合は、クラスをループの外で 1 回だけ作成します。

インスタンス化の繰り返しによって実行結果変わる場合は、ループ内でクラス インスタンスを作成するのが適切な実装です。

どちらが正しいかは、クラスの記述方法に完全に依存します。反復ごとにクラスを再インスタンス化する必要はないと断言できますが、それは純粋に投機的です。

于 2009-12-21T20:14:58.557 に答える
1

正しいというものはなく、どちらの場合もうまくいかないことはほとんどありません。Class状態がないように見えるため、機能的に同等であると思います。

于 2009-12-21T20:11:29.047 に答える
1

実際に見てみないとなんとも言えませんsomeMethod。純粋に機能する場合は、2 番目のサンプルの方がおそらく高速です。それが何らかの形でクラス メンバーに影響を与える場合、2 つの結果が異なる可能性があります。しかし、どれも「間違っている」わけではありません。

于 2009-12-21T20:11:41.840 に答える
1

おそらく2番目です。しかし、それはあなたがやろうとしていることによって異なります。

someMethod毎回オブジェクトの同じインスタンスを呼び出したい場合(これはよくある状況です)、2 番目のメソッドが適切です。毎回同じインスタンスかどうかが問題にならない場合は、2 番目の方法も適しています。

毎回異なるインスタンスで呼び出したい場合にのみ、最初のメソッドを使用する必要があります。

于 2009-12-21T20:12:38.813 に答える
0

後者 - クラスが一度だけインスタンス化されるため、パフォーマンスが向上します。状態に関する限り(他の回答を参照)、両方を試して結果を比較してください。

于 2009-12-21T20:15:32.360 に答える