[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Parse Error Exeption
rodzewich
Всем привет!
Вопрос в следующем. Как построить Exeption на Parse Error?
if(!function_exists('exceptions_error_handler')){
function exceptions_error_handler($severity,$message,$filename,$line) {
throw new ErrorException($message,0,$severity,$filename,$line);}
}

set_error_handler('exceptions_error_handler',E_ALL & ~E_NOTICE &~ E_USER_NOTICE | E_STRICT);
error_reporting(E_ALL | E_STRICT);

........
........
........


if(is_readable($__require_file))
try{require_once $__require_file;}
catch(Exception $__error){var_dump($__error->getTrace());}
else echo 'no readable file'; // Логирование


Т.е. что я делаю. Присоединяю файл php, но заведомо незнаю насколько он синтаксически валиден, поэтому необходима проверка файла на валидность или необходимо построить исключение.
Представленный код выше не работает. Функция http://ru.php.net/manual/en/function.php-check-syntax.php жёстко ограничена по версии php.

Как быть?




Спустя 38 минут, 10 секунд (29.04.2010 - 19:06) glock18 написал(а):
Увы, это не получится:

http://ru2.php.net/manual/en/function.set-error-handler.php

Цитата
The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.


было бы хорошо, если бы ошибки E_ERROR можно было там обрабатывать, но даже они не обрабатываются так, что обидно. parse обычно не так критично важен все таки

Спустя 26 минут, 55 секунд (29.04.2010 - 19:33) rodzewich написал(а):
Ну хорошо, а тогда если не исключение, то хотя бы проверка на валидность ...
Как это можно сделать?
Как закрыть (хоть как) дырку?

Спустя 2 часа, 30 минут, 25 секунд (29.04.2010 - 22:03) glock18 написал(а):
как дырку... если скрипт будет отрабатывать не при каждом запросе, то можно сотворить "истинную заплатку" - запускать проверяемый файл через exec/и иже с ними. получаем все что отдал скрипт и смотрим на наличие parse error. пойдет для автоматических тестов, но не для проверки на лету, что очевидно, конечно.


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.