5

これはphpマニュアルからのものです:http://us.php.net/manual/en/language.constants.syntax.php

未定義の定数を使用する場合、PHPは、定数を文字列として呼び出した場合と同じように、定数自体の名前を意味すると想定します(CONSTANTと "CONSTANT")。これが発生すると、レベルE_NOTICEのエラーが発行されます。

私はこの振る舞いが本当に好きではありません。必要な定数を定義できなかった場合は、スクリプトが失敗するため、強制的に定義する必要があります。未定義の定数を使用しようとした場合に、PHPにスクリプトを強制的にクラッシュさせる方法はありますか?

例えば。これらのスクリプトは両方とも同じことをします。

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

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

2番目のスクリプトDIEを使用して、未定義の定数DEBUGを使用しようとしたことを宣言します。

4

3 に答える 3

5

あなたはこのような(醜い)何かをすることができます:

擬似コード:

/**
 * 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");
于 2010-05-11T17:11:17.507 に答える
1
if(!defined('DEBUG')) die('failed.');
于 2010-05-11T16:56:21.613 に答える
1

スローされるエラーのタイプを変更する方法はないと思いますが、エラーレポートをerror_reportingE_ALLを使用するように変更して、開発中にこれらのエラーが表示されるようにすることができます。

error_reporting(E_ALL);
于 2010-05-11T17:10:43.170 に答える