"Better"

5 Cevap

Bu yazmak için daha iyi (yani, daha okunabilir) bir yolu var mı?

if (isset($input_vars['directive']) && $input_vars['directive'] == 'edit') {

5 Cevap

Gerçekten, ne yazık ki. Bir fonksiyonun içinde bu kodu sarın ve sadece her zaman bu ihtiyacı diyebiliriz.

function compareArrayItem($array, $key, $value) {
    return isset($array[$key]) && $array[$key] == $value;
}

if (compareArrayItem($input_vars, 'directive', 'edit')) {
    // Do something
}

Ama bu tür anlamsız bana (ve daha az okunabilir orijinal kod daha) görünüyor. Eğer tüm ilk ifadeyi gerekmez böylece Yoksa E_NOTICE dahil değil hata raporlama seviyesini düşürebilir.

error_reporting(E_ALL ^ E_NOTICE);

if ($input_vars['directive'] == 'edit') //...

Ama sadece kodunuzu kısaltılması uğruna bunu tavsiye etmem.

Ben olsaydım, ben istiyorum sadece leave it alone. Olduğu gibi-gayet iyi.

Eğer $input_vars bilinen ve size söz denetler tüm aşağıdaki yardımcı işlevi yapacak yerinde var olan izin verilen değerlerin kümesi:

function item ($array, $key) {
    if (isset ($array [$key]))
        return $array [$key];
    else
        return NULL; // Or use whatever is more appropriate
}

Sonra orijinal kod gibi görünmek için değiştirilebilir

 if (item ($input_vars, 'directive') == 'edit') { ...

Bu sadece daha okunabilir, ama aynı zamanda tekrarını ortadan kaldırır: dizi değişkeni ve anahtar hem de sadece bir kez görünür.

Ben birden fazla değer karşı $ input_vars ['yönerge'] test olacağım tahmin için gidiyorum (aksi halde, neden sadece basit bir boolean $ input_vars ['edit'] veya benzer saklanan olmazdı?). ('Display' Y yaparsak 'edit' X yaparsanız başka,) ben de o Testlerin birbiri ardına yapıyoruz ki bir tahmin tehlike olur.

Içerde beyanı ve yuva diğerleri (switch / case akış kötü bir seçim olmaz) eğer böyle bir durumda, sadece bir in isset () testi koydu.

Aşağıdakiler aynı sonucu her zaman doğuracak.

if($input_vars['directive'] == 'edit'){

Bunun nedeni onun, sonra onun değil 'edit' set değilse onun 'edit' sonra da set halinde.

Bu bir uyarı dönmek yok ama size PHP yükleme (yapmanız gerektiğini söyleyerek değil) kapalı özelliği olduğunu dönüşebilir.

Ben söyleyebilirim:

if(@$input_vars['directive']=='edit') {

Biraz daha okunabilir olacak ve yönerge yoksa bu uyarıları üretmez.