Ben adında parametrelerini geçmek, ama onları ayıklamak olmadan dizide tutmak için ilişkilendirilebilir bir dizi kullanarak öneririm.
function myFunc(array $args) {
echo "Hi, " . $args['name'];
// etc
}
Bu nedenleri bir çift var. Bu işlev baktığımızda, oldukça açıkça ben işlevi geçirilen argümanların birine bahsediyorum görebilirsiniz. Bunları ayıklamak ve fark yoksa extract()
(veya sonraki adam) bu "$name
" değişkeni nereden geldiğini merak başınızı çizilmeye olacak. Eğer do yerel değişkenleri bağımsız değişkenler ayıklanması biliyorum bile, yine de belli bir dereceye kadar bir tahmin oyunu.
İkincisi, diğer kod args üzerine yazmaz sağlar. Siz diğer kod, örneğin, $baz = 8;
tanımlamak bu yüzden sadece, $foo
ve $bar
adında bir değişkene sahip bekliyordum senin fonksiyonunu yazılmış olabilir. Daha sonra, "baz" adı verilen yeni bir parametre alabilir ama diğer değişkenleri değiştirmek için unutmak için işlevini genişletmek isteyebilirsiniz, bu nedenle olursa olsun argüman geçti alır ne, $baz
daima 8'e ayarlanır .
(Bu ayıklanması ya da dizideki bırakarak yöntemleri için aynı ölçüde geçerlidir) çok dizi kullanarak bazı faydaları vardır: adlandırılan her işlevin üstünde bir değişken ayarlayabilirsiniz $defaults
:
function myFunc (array $args) {
$default = array(
"name" => "John Doe",
"age" => "30"
);
// overwrite all the defaults with the arguments
$args = array_merge($defaults, $args);
// you *could* extract($args) here if you want
echo "Name: " . $args['name'] . ", Age: " . $args['age'];
}
myFunc(array("age" => 25)); // "Name: John Doe, Age: 25"
Hatta gelen $default
değeri yok $args
hangi tüm öğeleri kaldırmak olabilir. Bildiğiniz bu şekilde tam olarak hangi sahip değişkenler.