То, что я имел ДО, было ...
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. Первоначально мне понравился 1-й метод, который я выбрал, потому что он продолжал добавлять в массив, и я мог вывести его позже, чтобы посмотреть, что происходит .. Использование $_GLOBALS['debug_err_msgs']
и $_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
}
?>
ОШИБКИ IM GETTING
Примечание: неопределенный индекс: errorh_string в /debugOpenBlock.php в строке 14
Примечание: неопределенный индекс: errorh_string в /debugOpenBlock.php в строке 14
Что в приведенном выше коде, ВНУТРИ функции
$_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
вместо того, чтобы изменить весь мой код так, как он есть сейчас, но ... мне любопытно, что это за проблема сейчас ... я ненавижу не знать что-то :)
Кстати - я недавно отключил register_globals в файле PHP.INI. Может ли это быть как-то связано с этим (примечание: я НИКОГДА не использовал $ _SESSION ['somevariable'] как $ somevariable (главным образом потому, что я не знал, что вы можете это сделать, но ... в любом случае это не имеет значения)).
Я прочитал кучу статей о суперглобалах, register_globals и т. Д., Но ничто не проливает свет на это ..
В ожидании мудрости, о, больше, чем я, веб-разработчики:)