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); }
Короткий ответ: это зависит.
Длинный ответ: если повторная копия не изменит результат выполнения, создайте класс только один раз за пределами цикла.
Если повторная инстанция изменяет результат выполнения, то создание экземпляров класса внутри цикла является соответствующей реализацией.
Какое из них верно, полностью зависит от того, как написан ваш класс. Я готов поспорить, что вам не нужно повторно создавать класс на каждой итерации, но это чисто умозрительно.
Неправильно, и в любом случае не так уж плохо. Я предполагаю, что они функционально эквивалентны, поскольку Class
не имеет состояния.
Я не могу сказать, если не вижу, что делает какой-то someMethod
. Если это чисто функционально, то второй образец, вероятно, будет быстрее. Если это каким-то образом влияет на членов класса, тогда есть вероятность того, что двое приведут к разным результатам. Однако ни один из них не является «неправильным».
Скорее всего второй. Но это зависит от того, что именно вы пытаетесь сделать.
Если вы хотите каждый раз вызывать someMethod
в том же экземпляре объекта (что является вероятной ситуацией), то второй метод является правильным. Второй способ также предпочтительнее, если не имеет значения, является ли он одним и тем же экземпляром каждый раз или нет.
Только если вы хотите, чтобы он вызывал другой экземпляр, каждый раз должен использоваться первый метод.
Последнее – это улучшит производительность, поскольку класс создается только один раз. Что касается состояния (см. Другие ответы), попробуйте их и сравнить результаты.