Dizeleri olarak yorumlanmasını tanımsız sabitler önlemek için PHP bir yapılandırma seçeneği var mı?

2 Cevap php

http://us.php.net/manual/en/language.constants.syntax.php: Bu php manuel olduğunu

Eğer tanımlanmamış bir sabit kullanırsanız, PHP ("SABIT" vs SABİT) bir dize olarak adlandırılan, sanki sadece size sürekli kendini adını demek olduğunu varsayar. Bu durumda E_NOTICE seviyesinden bir hata verilecektir.

Ben gerçekten bu davranışı sevmiyorum. Ben gerekli bir sabit tanımlamak için başarısız varsa, ben değil komut bunu tanımlamak zorunda ediyorum o kadar başarısız olur. O tanımsız bir sabit kullanmaya çalışırsa komut çökmesine PHP zorlamak için herhangi bir yolu var mı?

Örneğin,. Bu komut her ikisi de aynı şeyi yapın.

<?php
define('DEBUG',1);
if (DEBUG) echo('Yo!');
?>

ve

<?php
if(DEBUG) echo('Yo!');
?>

I would rather the second script DIE vedeclare that it tried to use an undefined constant DEBUG.

2 Cevap

Böyle bir şey (çirkin) yapabilirdi:

pseudo code:

/**
 * A Notice becomes an Error :)
 */
function myErrorHandler($errno, $errstr, $errfile, $errline) {
    if ($errno == E_NOTICE) { // = 8 
        if (substr($errstr ... )) { // contains something which looks like a constant notice...   
             trigger_error('A constant was not defined!', E_USER_ERROR);
        }
    }
}
set_error_handler("myErrorHandler");

Ben atılan hata türünü değiştirmek için bir yol var sanmıyorum, ama E_ALL error_reporting geliştirirken bu hataları görmek ve böylece kullanarak hata raporlama değiştirebilirsiniz:

error_reporting(E_ALL);