PHP - nasıl etkin E_NOTICES ile iyi kod yazabilirsiniz?

2 Cevap php

Ben E_NOTICES açıkken geliştirmek için tercih, ama genellikle dizi indisleri ile çalışırken aşırı, aşırı ayrıntılı, kodu yazmak zorunda. Nasıl etkin E_NOTICES daha az kod bu kodu yazabilirsiniz.

Bildirimler bastırılmış ile

if ($_REQUEST['some_key'] == 'bob')
{
}

Bildirimler bastırılmış olmadan

if (array_key_exists('some_key', $_REQUEST) && $_REQUEST['some_key'] == 'bob')
{
}

2 Cevap

Ben genelde bu tür şeyler için, isset() yerine array_key_exists() kullanımı; hangi böyle bir şey kullanmak demektir:

if (isset($_REQUEST['some_key']) && $_REQUEST['some_key'] == 'bob')
{
}


A couple of differences :

  • Onun daha hızlı (no function call) ve - isset bir dil oluşumudur, bir işlev değil
  • note that isset will return false if a data is null ; array_key_exists will return true
    • Ama GET / POST parametreleri ile ilgili, özellikle, sık sık bir sorun değil
  • it shorter to write (a couple less characters)
    • gerekirse ve sen, if (isset($_REQUEST['a'], $_REQUEST['b'], $_REQUEST['c']) gibi bir şey kullanabilirsiniz

Kolay yolu @ hata bastırılması için kullanmaktır:

if (@$_REQUEST['some_key'] == 'bob') {}

Eğer sayfa yük başına fazla bir veya iki kez kullanıyor iseniz Ancak, bu çok yavaş olabilir.

Başka bir çözüm (ben böyle superglobals için çalışacak% 100 emin değilim ancak $_REQUEST) referans tarafından bilinmeyen atamak için:

$some_key =& $_REQUEST['some_key'];
if ($some_key == 'bob') {}

Genel olarak, ben sadece isset Pascal gibi kullanın dedi.