我之前所拥有的是......
if(DEBUGMODE) $debug_err_msgs[] = 'Some error'; // add a new error to the array
... more code here...
if(DEBUGMODE)$debug_err_msgs[] = 'Some error'; // add a new error to the array
除了功能外,效果很好。所以...我决定使用$ _GLOBALS数组使其成为GLOBAL。我最初喜欢我选择的第一种方法,因为它不断添加到数组中,我可以稍后将其转储以查看发生的情况。使用$_GLOBALS['debug_err_msgs']
和$_GLOBALS['errorh_string']
迫使我{{1}将(字符串)字符串添加到上一个字段(这是正常的......我认为你不能去... .=
并继续像我改变代码之前那样添加到数组中。我做了如下修改......
PHP
$_GLOBALS['something'][]
错误即时消息
注意:未定义索引:第14行/debugOpenBlock.php中的errorh_string
注意:未定义索引:第14行/debugOpenBlock.php中的errorh_string
在上面的代码中,INSIDE是函数
<?php
error_reporting(E_ALL);
set_error_handler("ErrorHandler");
$_GLOBALS['errorh_string'] = "";
if(DEBUGMODE) $_GLOBALS['debug_err_msgs'] = "";
if(DEBUGMODE) $_GLOBALS['debug_err_msgs'] .= 'La la la, some errors';
if(DEBUGMODE) $_GLOBALS['debug_err_msgs'] .= 'more errors... etc';
function ErrorHandler($errno, $errstr, $errfile, $errline)
{
// if ($errno == 8) return;// 8 is undefined variables
$error = "<b>Error[</b>$errno<b>] </b>$errstr<br />";
$_GLOBALS['errorh_string'] .= $error; // append new error to the global string
return true; // dont execute the php internal error handler
}
?>
这就是奇怪的......如果我改变线来阅读......
$_GLOBALS['errorh_string'] .= $error; // GIVES ME UNDEFINED
我甚至尝试过
$_GLOBALS['errorh_string'] = $error; // NO ERROR NOW
如果$_GLOBALS['errorh_string'] = $_GLOBALS['errorh_string'] . $error; // GIVES ME UNDEFINED
是文字?为什么我会在其中得到未定义。!?!??!我错过了关于GLOBALS的内容吗?
当我写这篇文章时,我以为我可以使用
'errorh_string'
而不是将我的所有代码改为我现在拥有的方式但是......我很好奇现在这个问题是什么......我讨厌不知道的事情:)
BTW - 我刚刚关闭了PHP.INI文件中的register_globals。这可能与它有什么关系(注意:我从来没有使用$ _SESSION ['somevariable']作为$ somevariable(主要是因为我不知道你能做到这一点但是......无论如何都无关紧要))。
我读过很多关于超级球,注册球等的文章,但是没有任何关于这个的文章。
等待智慧哦我比网络开发人员更多:)
答案 0 :(得分:1)
我找不到另一个问题,所以问题似乎是你刚才使用了错误的变量名。与输入数组不同,它被称为$GLOBALS
,而不是$_GLOBALS
。 (它不受register_globals设置btw的影响。)
global $debug_err_msg;
你应该更喜欢这种方法。这使得使用变量比使用$GLOBALS[]
访问更易读,并且还显示您有意共享该变量。