Форумы портала PHP.SU » » Вопросы новичков » set_error_handler и название функции в namespace

Страниц (1): [1]
 

1. ivanm - 17 Марта, 2017 - 16:20:05 - перейти к сообщению
Хочу перехватывать ошибки в свою функцию

только функция у меня подключается файлом и лежит там в нейспейсе:
PHP:
скопировать код в буфер обмена
  1. require_once 'functions/myfunctions';
  2. use \config\functions as functions;

если после этого обращаться к функции
PHP:
скопировать код в буфер обмена
  1. functions\myFunctionName($params);

то все работает.
А вот как прописать название этой функции в set_error_handler?
Вот так не получается:
PHP:
скопировать код в буфер обмена
  1. set_error_handler("functions\myFunctionName", E_ALL); // не работает
  2. set_error_handler("{functions\myFunctionName}", E_ALL); // тоже не работает
  3. set_error_handler('functions\myFunctionName', E_ALL); // ну не работает

как правильно записать??? оно ж в кавычках...
2. armancho7777777 - 18 Марта, 2017 - 22:29:12 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. set_error_handler('\\config\\functions\\myFunctionName', E_ALL);
3. ivanm - 21 Марта, 2017 - 12:16:12 - перейти к сообщению
БОЛЬШОЕ СПАСИБИЩЕ. Работает!
4. zypikov - 21 Марта, 2017 - 15:18:31 - перейти к сообщению
armancho7777777 пишет:
PHP:
скопировать код в буфер обмена
  1. set_error_handler('\\config\\functions\\myFunctionName', E_ALL);


Т.е. функцию можно передать только через абсолютный путь из глобального пространства имен? Двойной слэш это экранирование?
5. armancho7777777 - 21 Марта, 2017 - 18:12:03 - перейти к сообщению
zypikov пишет:
Т.е. функцию можно передать только через абсолютный путь из глобального пространства имен?

Необходимо указывать абсолютное имя (функции, класса), когда используете в виде строки.

zypikov пишет:
Двойной слэш это экранирование?

А, гоню.
Экранировать надо только на конце, при конкатенации.
PHP:
скопировать код в буфер обмена
  1. $fn = 'myFunctionName';
  2. set_error_handler('\config\functions\\' . $fn, E_ALL);

 

Powered by ExBB FM 1.0 RC1