Просто из любопытства, когда в этом есть необходимость? Можно ли создавать функции, имя которых вы не знаете?
Рассерженная шлюха
37
Одним из возможных применений будет регистрация вашего исполнения. Если вы пишете «У меня была ошибка в». ФУНКЦИЯ к лог-файлу или что-то. Таким образом, если имя функции изменено, вам не нужно беспокоиться о человеке, который помнит об изменении сообщения журнала.
Брайан Рамсей
1
Это необходимо для регистрации! спасибо за вопрос :)
SublymeRick
2
Также полезно, если вы хотите использовать имя функции внутри функции (для другого использования). Подобно созданию ссылок на основе функции и т. Д. (Например, function name1()затем снова использовать name1 внутри), сэкономит много времени, если у вас будет один и тот же шаблон для множества функций.
Мафия
1
@DisgruntledGoat: полезно, если вы создаете функции вручную и не хотите редактировать сообщение об ошибке для каждой функции. Добавление его в сообщение об ошибке означает, что у вас меньше работы.
FUNCTION работает и для неклассовых функций. Пробовал на PHP 7.0.8.
mvsagar
Точно так же, как получить имя класса?
Киран Редди
2
@KiranReddy Для этого тоже есть волшебная константа __CLASS__. Или вы можете сделать get_class($this).
Шон Боб
1
Пробовал на PHP> = 4
Наби КАЗ
98
Вы можете использовать магические константы__METHOD__ (включая имя класса) или __FUNCTION__(просто имя функции) в зависимости от того, является ли это методом или функцией ... =)
Это невероятно ресурсоемкий. Использование FUNCTION или METHOD намного эффективнее. debug_backtrace () отлично подходит, если вам нужно больше, чем просто имя функции.
Люк Казинс
2
Это плохая практика - использовать debug_backtrace () для этой цели
Marcio Mazzucato
1
ЭТО ЕДИНСТВЕННЫЙ ПРАВИЛЬНЫЙ ПУТЬ, который я нашел !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!! потому что __FUNCTION__возвращает имя родительской функции (когда текущая функция включена в родительскую функцию)
Хотя этот фрагмент кода может быть решением, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин, по которым вы предлагаете код.
function name1()
затем снова использовать name1 внутри), сэкономит много времени, если у вас будет один и тот же шаблон для множества функций.Ответы:
Точный способ - использовать
__FUNCTION__
предопределенную магическую константу .Пример:
Результат:
MethodA
.источник
__CLASS__
. Или вы можете сделатьget_class($this)
.Вы можете использовать магические константы
__METHOD__
(включая имя класса) или__FUNCTION__
(просто имя функции) в зависимости от того, является ли это методом или функцией ... =)источник
Если вы используете PHP 5, вы можете попробовать это:
источник
__FUNCTION__
возвращает имя родительской функции (когда текущая функция включена в родительскую функцию)Результат: «Метод А»;
источник