Normal olarak php betiği E_NOTICE'dan sonra çalışmaya devam ediyor, bir fonksiyon bağlamında bunu önemli bir hataya yükseltmenin bir yolu var, bu sadece benim fonksiyonumda yalnızca temel işlevlerimde değil, yalnızca çekirdek php işlevlerinde bildirimde bulunmam gerekiyor .E_NOTICE'da php çıkışı nasıl yapılır?
cevap
E_NOTICE
ürününü yakalamak için özel bir hata işleyicisi oluşturabilirsiniz.
Bu denenmemiş ama doğru yöne gitmeli: o zaman
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if ($errno == E_USER_NOTICE)
die ("Fatal notice");
else
return false; // Leave everything else to PHP's error handling
}
, onu terk ederken işlevini girme ve PHP'nin hata işleyicisi geri yüklediğinizde set_error_handler()
kullanarak yeni özel hata işleyicisi olarak ayarlamak:
function some_function()
{
// Set your error handler
$old_error_handler = set_error_handler("myErrorHandler");
... do your stuff ....
// Restore old error handler
set_error_handler($old_error_handler);
}
"Bu yalnızca işlevlerimde bildirimde çıkmak için gereklidir, ancak çekirdek php işlevlerinde değil, global olarak" –
@Rikudo Yukarıdakilerin tam olarak yaptığı şey bu değil mi? Ne eksik? –
O bir php çekirdek E_NOTICE üzerinde ölmek istemiyor ama sadece onun işlevleri tarafından tetiklenen bir E_USER_NOTICE :) –
kullanarak özel bir hata işleyicisi kullanmak set_error_handler()
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ($errno == E_USER_NOTICE) {
die("Died on user notice!! Error: {$errstr} on {$errfile}:{$errline}");
}
return false; //Will trigger PHP's default handler if reaches this point.
}
set_error_handler('myErrorHandler');
trigger_error('This is a E_USER_NOTICE level error.');
echo "This will never be executed.";
?>
Working Example
- 1. Log4Net'te XML çıkışı nasıl yapılır
- 2. Böyle bir JSON çıkışı nasıl yapılır?
- 3. Sass --watch'ın otoprefixer'a çıkışı nasıl yapılır?
- 4. Bazı teknik özelliklerin çıkışı nasıl yapılır
- 5. Eşit bir şekilde nasıl bilgi çıkışı yapılır?
- 6. HTTPServer ve BasicHTTPRequestHandler'in stderr çıkışı nasıl sessiz/sessiz yapılır?
- 7. Android -ndk'de "LogCat" penceresine değişken içerik çıkışı nasıl yapılır
- 8. Owin kendini ana bilgisayar desteği Json çıkışı nasıl yapılır?
- 9. MySQL PHP - değişken değer çıkışı için değişken
- 10. Php kullanarak yerel ayar nasıl yapılır?
- 11. Recv() çıkışı nasıl kaydedilir?
- 12. MapReduce - Çıkışı nasıl azaltabilirsiniz
- 13. Json çıkışı nasıl biçimlendirilir?
- 14. R çıkışı nasıl kaydedilir?
- 15. DacSevices.Deploy çıkışı nasıl alınır?
- 16. PHP betiğini kullanarak herhangi bir DOM'da sadece `-` çıkışı nasıldır?
- 17. PHPExcel tamamen çıkışı
- 18. Zaman komutunun çıkışı nasıl anlaşılır?
- 19. NSIS'de komut çıkışı nasıl alınır?
- 20. xsd.exe/c çıkışı nasıl kullanılır?
- 21. Sed çıkışı nasıl tersine çevrilir?
- 22. php interaktif kabuğun herhangi bir çıkışı yok mu?
- 23. Lümen öngörülebilir çıkışı
- 24. Rails3 SQL günlük çıkışı ayrı bir dosyada
- 25. Baskı çıkışı
- 26. bas çıkışı
- 27. PHP ile başka bir siteye nasıl giriş yapılır
- 28. jQuery, PHP ve MySQL kullanarak nasıl sohbet yapılır?
- 29. PHP kullanarak büyük dizi (26000 x 26000) nasıl yapılır?
- 30. Anahtarlar göz ardı edilirken iki PHP dizisini birleştirmek nasıl yapılır
Neden kendi işlevlerinizle kısıtlamanız gerekiyor? Bir çekirdek işlevi bir E_NOTICE atarsa, bu genellikle yanlış kullandığınız anlamına gelir (kendi işlevinizde). Bu yüzden tüm E_NOTICE'ları yakalamak isteyeceğinizi düşünüyorum. 'Trigger_error' kullanarak kendiniz bir uyarıyı kendiniz tetiklemezseniz, bu durumda ayırt etmek kolay bir E_USER_NOTICE sürümünü tetiklemeniz gerekir. – deceze
Öncelikle E_NOTICE'da fonksiyonumdan çıkış yapmayı düşündüm, en azından bazıları. E_USER_NOTICE için istisnalar yazmanın anlamsız olduğunu düşünüyorum çünkü bu durumda herhangi bir programcının amacı bu bildirimi gerçekten işe koyup yürütmeye devam etmektir. – rsk82
"Sadece işlevlerimde bildirimler" [Tetikleyici] (http://il2.php.net/manual/en/function.trigger-error.php) bunları kendiniz yapmak istediğiniz anlamına mı geliyor? ya da işlevlerinizdeki normal "çekirdek" E_NOTICE'lar? –