Некоректная работа if при использовании своего error handler

DnKrozz

Новичок
Некоректная работа if при использовании своего error handler

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

Вроде все работает, но стали появляться всякие артефакты, то меню какоето лишнее появилось то еще что-то.

В результате наткнулся на совершно бессовестное поведение пхп.

Код:
PHP:
<? 
if($_POST['somevar1'] == chr($charcode) || $_POST['somevar2'][0] == chr($charcode))
    echo 'text1';
else
    echo 'text2';
?>
При:
$_POST['somevar1'] = '';
$_POST['somevar2'] = '';
$charcode = от A до Z;
Всегда выдает '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

Спасибо.
 
Сверху