首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP中是否有一个配置选项来防止未定义的常量被解释为字符串?

PHP中是否有一个配置选项来防止未定义的常量被解释为字符串?
EN

Stack Overflow用户
提问于 2018-08-24 06:54:07
回答 2查看 0关注 0票数 0

这是来自php手册:http//us.php.net/manual/en/language.constants.syntax.php

如果使用未定义的常量,PHP假定您指的是常量本身的名称,就像您将其称为字符串一样(CONSTANT vs“CONSTANT”)。发生这种情况时,将发出级别E_NOTICE的错误。

我真的不喜欢这种行为。如果我没有定义一个必需的常量,我宁愿脚本失败,所以我被迫定义它。如果它尝试使用未定义的常量,有没有办法强制PHP崩溃脚本?

例如。这两个脚本都做同样的事情。

代码语言:javascript
复制
<?php
define('DEBUG',1);
if (DEBUG) echo('Yo!');
?>

代码语言:javascript
复制
<?php
if(DEBUG) echo('Yo!');
?>

我宁愿第二个脚本DIE并声明它试图使用未定义的常量DEBUG。

EN

回答 2

Stack Overflow用户

发布于 2018-08-24 14:57:34

你可以这样做(丑陋):

伪代码:

代码语言:javascript
复制
/**
 * 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");
票数 0
EN

Stack Overflow用户

发布于 2018-08-24 16:51:20

代码语言:txt
复制
if(!defined('DEBUG')) die('failed.');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档