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

简短的回答:这取决于。

长答案:如果重复实例化不会改变执行的结果,那么只在循环之外创建一次类。

如果重复实例化确实改变了执行的结果,那么在循环内创建类实例是合适的实现。

其中哪一个是正确的完全取决于你的课程是如何编写的。我敢打赌,您不需要每次迭代都重新实例化该类,但这纯粹是推测性的。

于 2009-12-21T20:14:58.557 回答
1

没有正确的,在任何一种情况下都不会出错。我认为它们在功能上是等效的,因为它们Class似乎没有状态。

于 2009-12-21T20:11:29.047 回答
1

我真的不能说,除非我看到什么someMethod。如果它纯粹是功能性的,那么第二个样本可能会更快。如果它以某种方式影响班级成员,那么两者就有可能导致不同的结果。不过,它们都不是“错误的”。

于 2009-12-21T20:11:41.840 回答
1

很可能是第二个。但这取决于您到底要做什么。

如果您想someMethod每次都调用对象的同一个实例(这是可能的情况),那么第二种方法是正确的。如果每次是否是同一个实例都无关紧要,第二种方法也更可取。

仅当您希望每次都在不同的实例上调用它时,才应使用第一种方法。

于 2009-12-21T20:12:38.813 回答
0

后者 - 它将提高性能,因为该类仅实例化一次。就状态而言(请参阅其他答案),只需尝试它们并比较结果即可。

于 2009-12-21T20:15:32.360 回答