set_error_handler(PHP 4 >= 4.0.1) set_error_handler - устанавливает пользовательский обработчик ошибок. Описаниеstring set_error_handler (string error_handler) Устанавливает пользовательскую функцию (error_handler) для обработки ошибок в скрипте. Возвращает ранее определённый обработчик ошибок (если имеется), FALSE при ошибке. Эта функция может использоваться для определения вашего собственного способа обработки ошибок на этапе прогона, например, в приложениях, в которых вам нужно зачистить данные/файлы при возникновении критических ошибок, или если вам нужно переключить ошибку при определённых условиях (использую trigger_error()). Пользовательская функция должна принимать 2 параметра: error-код и строку с описанием ошибки. Начиная с PHP 4.0.2, предоставляются дополнительные 3 параметра: имя файла, в котором появилась ошибка, номер строчки, в которой появилась ошибка, и контекст, в котором появилась ошибка (массив, указывающий на активную таблицу символов в точке возникновения ошибки).
Следующий пример показывает обработку внутренних исключений путём переключения ошибок и обработки их пользовательской функцией:
А когда вы запустите это скрипт-сэмпл:
Важно помнить, что стандартный обработчик ошибок РНР полностью игнорируется. Установки error_reporting() не будут иметь эффекта, и ваш обработчик будет вызываться независимо - однако вы можете читать текущее значение из error_reporting и поступать соответственно. Особенно важно то, что это значение будет 0, если оператор, вызвавший ошибку, имел префикс @. Отметьте также, что вы отвечаете за die(), если это необходимо. Если возвращает функция обработки ошибок, выполнение скрипта будет продолжено со следующего оператора после оператора, вызвавшего ошибку. См. также error_reporting(), restore_error_handler(), trigger_error(), user_error(). |
||||||||||
|
||||||||||
Когда субпатэрн в скобках квантифицирован минимальным количеством повторений, которое больше 1, или имеет ограничение максимума, для откомпилированного патэрна требуется больше места, пропорционально размеру минимума или максимума.
Если патэрн начинается с .* или с .{0,} и установлена опция PCRE_DOTALL (эквивалентная
Perl'овской /s), разрешая, таким образом совпадение . с символами новой строки,
то патэрн неявно заякоривается, поскольку всё, что идёт следом, будет испытываться
относительно каждой символьной позиции в строке-субъекте, поэтому после первой
нет другой позиции для возобновления попыток найти полное совпадение.
PCRE рассматривает такой патэрн так, как если бы ему предшествовало \A. Когда
известно, что строка-субъект не содержит символов новой строки, предпочтительнее
установить PCRE_DOTALL, если патэрн начинается с .*, чтобы получить эту
оптимизацию, или, альтернативно, использовать ^ для явного обозначения заякоривания.
Когда захватывающий субпатэрн повторяется, захваченным значением является подстрока,
которая совпадает с последней итерацией. Например, после того как
(tweedle[dume]{3}\s*)+
совпадает с "tweedledum tweedledee", значением захваченной подстроки будет "tweedledee".
Однако, если имеются вложенные захватывающие субпатэрны, соответствующие захваченные
значения могут быть установлены в предыдущих итерациях. Например, после того
как
/(a|(b))+/
совпадёт с "aba", значением второй захваченной подстроки будет "b".
| |