DnKrozz
Новичок
Некоректная работа if при использовании своего error handler
Пришлось фиксить баги в достаточно обьемной софтине индийского производства
Сразу решил поставить свой логер ошибок.
Проблему постоянных нотайсов решил (а я то дурак в своем коде всегда добивался полного их отсутствия причем без помощи "@"
).
Вроде все работает, но стали появляться всякие артефакты, то меню какоето лишнее появилось то еще что-то.
В результате наткнулся на совершно бессовестное поведение пхп.
Код:
Всегда выдает 'text1' при моем обработчике ошибок и 'text2' при дефолтном.
Причина явно во второй части выражения тк $_POST['somevar2'][0] не определено, и обработчик честно об этом пишет, и мой и пхпешный. Но вот if работает по разному.
Я пробовал в своем обработчике делать return false; (судя по документации это должно отдавать контроль дефолтному обработчику. Пробовал использовать "@" (у меня оно обрабатывается так: if (error_reporting() == 0) return; В return тоже подставлял все что только можно).
var_export для $_POST['somevar2'][0] выдает '' тоесть пустую строку. которая никак не может быть равна 'A' к примеру, но if срабатывает.
Решение исправлять код не подходит, т.к. его много, а заказчик хочет только исправить некоторые баги.
Я уже в принципе решил пользоваться родным пхпшным логом, единственное что теряю это backtrace.
Но вот просто очень интресно, ктонибудь сталкивалс с такой проблемой ? И возможно-ли написать такой обработчик ошибок который не будет влиять на исполнение кода, пускай даже самого кривого
?
php 4.4.4
Спасибо.
Пришлось фиксить баги в достаточно обьемной софтине индийского производства

Сразу решил поставить свой логер ошибок.
Проблему постоянных нотайсов решил (а я то дурак в своем коде всегда добивался полного их отсутствия причем без помощи "@"

Вроде все работает, но стали появляться всякие артефакты, то меню какоето лишнее появилось то еще что-то.
В результате наткнулся на совершно бессовестное поведение пхп.
Код:
PHP:
<?
if($_POST['somevar1'] == chr($charcode) || $_POST['somevar2'][0] == chr($charcode))
echo 'text1';
else
echo 'text2';
?>
При:
$_POST['somevar1'] = '';
$_POST['somevar2'] = '';
$charcode = от A до Z;
Причина явно во второй части выражения тк $_POST['somevar2'][0] не определено, и обработчик честно об этом пишет, и мой и пхпешный. Но вот if работает по разному.
Я пробовал в своем обработчике делать return false; (судя по документации это должно отдавать контроль дефолтному обработчику. Пробовал использовать "@" (у меня оно обрабатывается так: if (error_reporting() == 0) return; В return тоже подставлял все что только можно).
var_export для $_POST['somevar2'][0] выдает '' тоесть пустую строку. которая никак не может быть равна 'A' к примеру, но if срабатывает.
Решение исправлять код не подходит, т.к. его много, а заказчик хочет только исправить некоторые баги.
Я уже в принципе решил пользоваться родным пхпшным логом, единственное что теряю это backtrace.
Но вот просто очень интресно, ктонибудь сталкивалс с такой проблемой ? И возможно-ли написать такой обработчик ошибок который не будет влиять на исполнение кода, пускай даже самого кривого

php 4.4.4
Спасибо.