Büyük sorun bu fonksiyon oldukça anlamsız olmasıdır. En gerçek bir (varsayımsal) çalışma örneği ile değiştirin edelim:
function isAnd($var, $value, $operator = '==') {
return isset($var) && $var $operator $value;
}
isAnd($foo, 1, '===');
Bu örnekte $foo
ayarlı değil. Bir fonksiyona ($foo
) varolmayan bir değişken geçmek için çalışıyoruz çünkü bir hata alırsınız (isAnd
). Yani, isset
before çağırmak için $foo
test etmek gerekir isAnd
olacak:
isset($foo) && isAnd($foo, 1, '===');
Yani, hiç isAnd
fonksiyonunu giren herhangi bir değişken kesinlikle ayarlanır. Sen işlev içinde bunun için test etmek gerekmez. Yani tüm egzersiz oldukça anlamsızdır.
Ne kafa karıştırıcı olabilir ki isset()
ve hata olmadan onlara varolmayan bir değişken geçirebilirsiniz yani empty()
, bu sınırlama yoktur. Şey özel dil yapıları (; PHP suçlama fonksiyonları gibi bakmak olur) demektir, bu normal fonksiyonlarını değil, olsa. Ne yazık ki you yapıları bu tür yapamaz, senin işlevleri için parametreler her zaman bulunması gerekir.
Sadece yazmaya alışmalıyız isset($foo) && $foo === 1
. Düzgün yapılandırılmış kod ile, her zaman yine de iyi bir uygulama olduğu, kullanmak için gidiyoruz tüm değişkenleri bildirerek az bu azaltabilir.
Dinamik operatörü için ... Yine de kullanmak için hangi operatör karar if ... else
yerde çeşit gerekir. Bunun yerine operatör değişken ayarlama ve sonra değerlendirilmesi, orada doğru bir değerlendirme yapmak daha kolay değil mi?