Bir döngü içinde veya bir döngü içinde yeni bir sınıf başlatmasını?

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

hangi doğru?

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

veya

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

Edited to be mveyae specific, using http://simplepie.veyag/wiki/reference/simplepie/get%5Fitems

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

5 Cevap

Short answer: olduğunu bağlıdır.

Long answer: Tekrar örnekleme doesn't yürütme sonucunu değiştirmek, daha sonra döngünün dışında sadece bir kez sınıf oluşturmak durumunda.

Tekrar örnekleme does daha sonra döngü içinde sınıf örneklerini oluştururken, yürütme sonucunu değiştirmek uygun uygulama varsa.

Bunlardan hangisi doğrudur sınıf nasıl yazıldığını üzerine tamamen bağlıdır. Ben sınıf her tekrarında yeniden örneğini gerekmez bahse hazırım, ama bu tamamen spekülatif bulunuyor.

I someMethod ne görmek sürece ben gerçekten söyleyemem. Bunun tamamen işlevsel ise, o zaman ikinci örnek probably hızlı olacaktır. O bir şekilde sınıf üyelerini etkiler ise, o zaman iki farklı sonuçlara yol açacak bir şans var. Bunların hiçbiri olsa 'yanlış' olduğunu.

Büyük olasılıkla ikinci. Ama bunu yapmak için çalışıyoruz tam olarak ne bağlıdır.

Eğer nesnenin aynı örneği someMethod (olası durum) her zaman aramak istiyorsanız, o zaman ikinci yöntem doğru biridir. O her zaman ya da aynı örnek olsun farketmez eğer ikinci yöntem tercih edilir.

Yalnızca isterseniz her zaman ilk yöntem kullanılması gereken bir different Mesela çağırdı.

Orada hiçbir correct, ve çok değil iki durumda yanlış gidecek. I Class devleti var görünmüyor gibi onlar, işlevsel olarak eşdeğer olduğunu varsayalım.

İkincisi - sınıfı yalnızca bir kez örneği olduğu gibi performansını artıracaktır. Bildiğim kadarıyla devlet (diğer yanıtları görmek) ile ilgili olarak, sadece onları ikisini de deneyin ve sonuçları karşılaştırın.