2012-02-08 15 views
6

birden fazla parametre ve bu değerlerden biri daha dönmek bu ihtiyacı var benim fonksiyonlarının tek şeyPHP'de referans veya getiri dizisi ile mi geçersiniz?

function eg($a, $b) { 
    $a += 5; 
    $b += 10; 
    return array('a' => $a, 'b' => $b); 
} 
$no = eg(0, 5); 
echo $no['a']; // 5 
echo $no['b']; // 10 

bu referans yani geçen kıyasla kötü bir uygulama olarak kabul Is ... şöyle bir array dönmek; Bu gerçekten

function eg(&$a, &$b) { 
    $a += 5; 
    $b += 10; 
} 
eg(0, 5); 
echo $a; // 5 
echo $b; // 10 

önemli mi? Yukarıdaki örnekleri kullanırken ne zaman diğerini kullanmak isterdim? Performansta bir fark var mı?

Teşekkür yorumların çoğu işaret gibi

+0

Bu görüşe göre, bu soru muhtemelen bu foruma tam olarak uygun değildir, ancak şahsen yukarıdaki örneğinizin muhtemelen daha temiz ve referansla geçmekten daha iyi olduğunu söyleyebilirim, bu biraz tembeldir ve kodunuz iyi bir şekilde kapsüllenmişse Okurken, $ a ve $ b değerlerinin neden aniden farklı olduğunu görmek zorlaşır. İlk örneğiniz, kişisel olarak, gitmek için bir yol olduğunu düşünüyorum. – DaOgre

+0

Sorudan dolayı, başka bir üyeden başka bir üyeden soru sormasını istedim. Yorumun için teşekkürler. Sadece kodumun değiştirilip değiştirilmeyeceğini merak ediyorum ya da iyi ya da kötü bir uygulama olup olmadığına bağlı değil. Ama ilk örneği anlamak daha kolay olduğunu anlıyorum. – cgwebprojects

+0

Evet ya da hayır cevabı yok, ilk örneğin daha açık olduğuna katılıyorum ve iş arkadaşınız size bu açıklık için teşekkür edecektir. – Wrikken

cevap

6

, (bir dizi dönen) İlk yöntem bu ölçüme göre böylece, bu "iyi" olduğunu anlamak için daha temiz ve daha kolaydır.

Kullanım durumunuza bağlı olarak, yine de, birden çok değeri denemek ve geri döndürmemek daha iyi olabilir. Bu tabii ki, zoraki bir örnektir

public function getWidth() { 
    return $this->_width; 
} 

public function getHeight() { 
    return $this->_height; 
} 

echo $canvas->getWidth(), ' x ', $canvas->getHeight(); 

ancak yöntemler yerine anlamsız pahalı bir şey yapmak olduğunu varsayalım:

public function getDimensions() { 
    return array(
     'width' => $this->_width, 
     'height' => $this->_height 
    ); 
} 

$dim = $canvas->getDimensions(); 
echo $dim['width'], ' x ', $dim['height']; 

karşılaştırıldığında: düşünün. Şimdi sadece değer kümesinin ilkine ihtiyacınız olduğunu düşünün, ancak yönteminiz her bir çağrı için hepsini hesapladığından, her şeyi israf etmelisiniz ve ihtiyacınız olmayan şeyleri atmalısınız.

İlgili konular