SORU
4 HAZİRAN 2009, PERŞEMBE


Ne zaman php eval kötü olduğunu?

Php geliştiriyorum onca yıl boyunca, her zaman eval() kullanarak kötü olduğunu duydum.

Aşağıdaki kodu göz önüne alındığında, bu mantıklı (ve daha fazla) şık ikinci seçeneği kullanmak için yapmaz mı? Değil, neden?

// $type is the result of an SQL statement
// e.g. SHOW COLUMNS FROM a_table LIKE 'a_column';
// hence you can be pretty sure about the consistency
// of your string
$type = "enum('a','b','c')";

// possibility one
$type_1 = preg_replace('#^enum\s*\(\s*\'|\'\s*\)\s*$#', '', $type);
$result = preg_split('#\'\s*,\s*\'#', $type_1);

// possibility two
eval('$result = '.preg_replace('#^enum#','array', $type).';');

CEVAP
4 HAZİRAN 2009, PERŞEMBE


Eval arayarak da dikkat edeceğim() saf kötülük.Dinamik değerlendirme güçlü bir araçtır ve bazen hayat kurtarıcı olabilir. Eval() PHP eksiklikler (aşağıya bakınız) bir çözüm olabilir.

Eval ile temel sorunlar ():

  • Potansiyel güvenli olmayan giriş.Güvenilmeyen bir parametre geçirmeden başarısız bir şekilde. Genellikle bir parametre (veya bir kısmını) tam güvenilir olduğundan emin olmak için önemsiz bir görev değildir.
  • Bit yeniği.Eval() kullanarak kod zeki yapar, bu nedenle takip etmek daha zor. Brian açıklama satırı yazmak alıntı yapmak "Hata ayıklama ilk etapta kod yazma iki kat daha zor. Kod yazmak zekice olarak mümkünse, bu nedenle, tanımı gereği, hata ayıklamak için yeterince akıllı değilsin"

Eval gerçek kullanımı esas sorunu() sadece bir

  • Yeterince dikkate almadan kullanmak isteyen deneyimsiz geliştiriciler.

Genel bir kural olarak bu uymalıyım:

  1. Bazen eval() sadece/doğru çözüm.
  2. Çoğu için başka bir şey deneyin.
  3. Eğer emin değilseniz, 2 goto.
  4. Başkaçok, çok dikkatli olun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010
  • Willie D.

    Willie D.

    16 Aralık 2006