У меня была яркая идея использования специального обработчика ошибок, который привел меня к кроличьей дыре.
Следующий код дает (с и без специального обработчика ошибок): Неустранимая ошибка: только переменные могут передаваться по ссылке
function foo(){
$b=array_pop(array("a","b","c"));
return $b;
}
print_r(foo());
Следующий код дает (только с настраиваемым обработчиком ошибок): (2048) Только переменные должны передаваться по ссылке
function foo(){
$a=explode( '/' , 'a/b/c');
$c=array_pop(array_slice($a,-2,1));
return $c;
}
print_r(foo());
Второй меня беспокоит, так как у меня много "компактного" кода. Таким образом, я либо бросаю яркую идею использования настраиваемого обработчика ошибок (для улучшения модуля регистрации), либо расширяю весь свой код.
Кто-нибудь с лучшими идеями? Кроме того, WTF?
UPDATE
Благодаря ответам я кое-что узнал о том, как PHP обрабатывает ошибки. Путаница E_ALL, не считая E_STRICT (php 5), не крута.
Кроме всего прочего, создание собственного обработчика ошибок позволяет по умолчанию запускать E_STRICT, и в этом случае проблемы начинаются.
Мораль этой истории состоит в том, чтобы использовать свой собственный обработчик ошибок, чтобы поймать их ВСЕ и использовать константы ошибок (E_STRICT, E_USER_WARNING, E_USER_ERROR и т.д.), чтобы сделать вашу фильтрацию.
Что касается "проблемы с повреждением памяти" с переменными ссылками и некоторыми функциями, что я могу сказать? Совсем нераскрытый. Я (это не значит, что вы должны) игнорировать E_STRICT в моем обработчике ошибок и жизнь продолжается.