За обработку ошибок у меня в скрипте отвечает следующая функция:
function error_handler(
$error_code,
$error_message,
$error_file_name,
$error_line,
$error_context
){
echo 'Error_code: ' . $error_code . '<br />';
echo 'Error_message: ' . $error_message . '<br />';
echo 'Error_file_name: ' . $error_file_name . '<br />';
echo 'Error_line: ' . $error_line . '<br />';
// some code...
die();
}
set_error_handler('error_handler');
Но есть моменты, которые мне не понятны. Например, в своём скрипте я использую метод транзакций:
// some code...
$host_db = '127.0.0.1';
$login_db = 'root';
$password_db = '';
$database_db = 'some_db';
$DB = new PDO('mysql:host=' . $host_db . ';dbname=' . $database_db, $login_db, $password_db);
$DB -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DB -> beginTransaction();
// some code...
$DB -> commit();
// some code...
Если в скрипте произошла ошибка, то как мне откатить транзакцию в функции
error_handler? Там ведь недоступна переменная
$DB!!!
То же самое и с загрузкой файлов (скрипт приводить не буду). Все загруженные файлы я сохраняю в массив
uploaded_files, как мне удалить все загруженные файлы, в случае возникновения ошибки, если переменная
uploaded_files не видна в функции
error_handler?
Как вообще правильно реализовывать обработку ошибок на php?
ДОПОЛНЕНИЕ:
Что делать если ошибка произойдёт в функции
error_handler 0_0?