我之前有的是...
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']
and$_GLOBALS['errorh_string']
迫使我.=
将字符串(附加)到前一个(这没关系。 ..我不认为您可以去...$_GLOBALS['something'][]
并像更改代码之前那样继续添加到数组中。所以..我进行了如下更改...
PHP
<?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
}
?>
我收到的错误
注意:未定义的索引:第 14 行 /debugOpenBlock.php 中的 errorh_string
注意:未定义的索引:第 14 行 /debugOpenBlock.php 中的 errorh_string
在上面的代码中,在函数内部
$_GLOBALS['errorh_string'] .= $error; // GIVES ME UNDEFINED
这是奇怪的...如果我将行改为阅读...
$_GLOBALS['errorh_string'] = $error; // NO ERROR NOW
我什至试过
$_GLOBALS['errorh_string'] = $_GLOBALS['errorh_string'] . $error; // GIVES ME UNDEFINED
如果'errorh_string'
是文字?为什么我在里面没有定义.!?!??! 我错过了一些关于全球的东西吗?
当我写这篇文章时,我在想我可以使用
global $debug_err_msg[]; // make this array global
而不是将我所有的代码更改为我现在拥有的方式但是......我很好奇这个问题现在是什么......我讨厌不知道一些事情:)
顺便说一句 - 我最近刚刚在 PHP.INI 文件中关闭了 register_globals。这可能与它有什么关系吗(注意:我从来没有使用 $_SESSION['somevariable'] 作为 $somevariable (主要是因为我不知道你可以这样做,但是......无论如何都无所谓))。
我已经阅读了很多关于 superglobals、register_globals 等的文章,但没有任何关于这一点的信息。
等待智慧哦,比我更伟大的网络开发人员:)