Kalkınma için önerilen ayar error_reporting () nedir?

6 Cevap php

Genellikle ben kullanmak E_ALL PHP denemek ve geliştirmek için benim kod hakkında diyebilirsiniz şey görmek.

Ben sadece bir hata sabit E_STRICT ettim, ama kullanılan ya da bu konuda hiç duymadım, bu geliştirme için kullanılacak iyi bir ayardır? Manuel diyor ki:

Run-time bildirimleri. PHP en iyi birlikte çalışabilirlik ve kod ileriye dönük uyumluluğunu kodunuzda değişiklik önermek zorunda etkinleştirin.

I E_ALL ile iyi error_reporting seviyesini istimal veya birlikte o E_STRICT iyi olurdu diye merak ediyorum? Yoksa öğrenmek için henüz ettik başka bir kombinasyon var mı?

6 Cevap

PHP 5, kapsadığı şeyler E_STRICT en çok bilgi almak için bu yüzden, E_ALL kapsamında değildir, bunları birleştirmek gerekir:

 error_reporting(E_ALL | E_STRICT);

PHP 5.4, E_STRICT E_ALL dahil edilecek, böylece sadece E_ALL kullanabilirsiniz.

Da kullanabilirsiniz

error_reporting(-1);

ki her zaman all hataları sağlayacaktır. Normalde kastedilmektedir

error_reporting(~0);

Gerçekten her zaman bile ezoterik sistemleri, all hataları sağlayacak olan (normalde, bu gerekmez ama o technically correct).

Php.ini de aşağıdaki kullanın:

error_reporting = E_ALL | E_STRICT

Ayrıca Xdebug, parlak renkler kör daki hataları vurgulamak ve yararlı ayrıntılı bilgi yazdırabilirsiniz yüklemeniz gerekir.

Zararsız olsa bile, kodunuzda herhangi bir hata veya uyarı asla izin vermeyin.

Benim düşünceme göre, yüksek sen daha iyi, geliştirme aşamasında hata raporlama seviyesini ayarlayın.

Canlı bir ortamda, biraz (ama sadece biraz) azaltılmış set istiyorum, ama sen onları (I syslog tercih) kullanıcı tarafından görülemez bir yere giriş istiyorum.

http://php.net/error_reporting

E_ALL | E_STRICT 5.2.0 öncesi PHP geliştirme için.

5.2 tanıttı E_RECOVERABLE_ERROR ve 5.3 tanıttı E_DEPRECATED ve E_USER_DEPRECATED. Muhtemelen bu sürümlerinden birini çalıştıran eğer bu açmak isteyeceksiniz.

16777215, demek, ve bu gerçekten sadece açacak - sihirli numaraları kullanmak istedim ise sadece 2^n-1 bazıları oldukça yüksek bir değere error_reporting değerini ayarlayabilirsiniz arasındaki tüm bit üzerinde 1..n. Ama sihirli numaralarını kullanarak iyi bir fikir olduğunu sanmıyorum ...

Benim düşünceme göre, PHP E_ALL gerçekten hiç olmayacak alarak topu biraz düşmüştür. Ama görünüşe PHP 6 sabit gidiyor ...

Yeni PHP sürümlerinde, E_ALL hataları daha sınıfları içerir. PHP 5.3 'ten beri, E_ALL şeyi except E_STRICT içerir. PHP 6 yılında alledgedly bile içerecektir. Bu iyi bir ipucu: bu daha fazla hata mesajları yerine daha az görmek daha iyidir.

Ne E_ALL dahil olan çevrimiçi kılavuzda PHP predefined constants sayfasında belgelenmiştir.

Şahsen ben size E_STRICT kullanmak eğer tüm bu çok önemli değil bence. Bu kesinlikle gelecekteki PHP sürümlerinde kırık alma küçük bir şans var komut yazmadan sizi engelleyebilir, özellikle size zarar vermez. Öte yandan, bazı durumlarda sıkı mesajları belki özellikle aceleniz varsa, çok gürültülü olabilir. Ben varsayılan olarak bunu açmak ve bu can sıkıcı aldığında kapatmak öneririz.

Bu kod için uzun vadeli destek planlarına bağlı olarak, E_STRICT ile hata ayıklama uzak gelecekte çalışmaya devam etmek kodunuzu yardımcı olabilir etkin, ama muhtemelen gün için günlük kullanım için overkill. Akılda tutulması gereken E_STRICT yaklaşık iki önemli şey vardır:

  1. Per the manual, en E_STRICT hataları, çalışma zamanı değil, derleme zamanında oluşturulur. Eğer (ve php.ini üzerinden) kodu içinde E_ALL için hata düzeyi artmaktadır varsa, zaten E_STRICT hataları görmek asla.
  2. E_STRICT PHP 6 altında E_ALL içinde bulunan, ancak PHP 5 altında. Eğer PHP6 için sunucu yükseltme ise, yukarıda # 1 gibi E_ALL yapılandırılmış olması, sizin açınızdan herhangi bir ek değişiklik gerektirmeden E_STRICT hatalarını görmeye başlayacaksınız.

Kesinlikle error_reporting konuşan değil, ben strongly otomatik ayrıştırma hataları ve ortak hatalar (örneğin durumda atama) gösteren herhangi bir IDE kullanarak öneririm.

Eclipse için Zend Studio varsayılan olarak etkin, bu özelliği vardır ve bunu kullanmaya başladığımdan beri ortaya çıkmadan, bu hataları yakalamakta a lot bana yardımcı olmuştur.

Örneğin, ben $GLOBALS değişken bazı verileri önbelleğe oldu bu kod parçası vardı, ama ben yanlışlıkla yazdım $_GLOBALS yerine. Kadar veri önbelleğe var asla ve Zend bana söylemedin ben biliyordum asla: "Hey, bu $_GLOBALS şeysi yalnızca bir kez görünür, bu bir hata olabilir."