Как получить имя функции внутри функции в PHP?

Является ли это возможным?

<code>function test()
{
  echo "function name is test";
}
</code>
 Brian Ramsay17 июн. 2009 г., 13:48
Одним из возможных применений будет регистрация вашего исполнения. Если вы пишете, у меня произошла ошибка в & quot; ,FUNCTION в лог-файл или что-то. Таким образом, если имя функции изменено, вам не нужно беспокоиться о человеке, который помнит об изменении сообщения журнала.
 SublymeRick31 июл. 2012 г., 19:09
Это необходимо для регистрации! Спасибо за вопрос :)
 John Boe31 мар. 2016 г., 13:56
@DisgruntledGoat: полезно, если вы создаете функции вручную и не хотите редактировать сообщение об ошибке для каждой функции. Добавление его в сообщение об ошибке означает, что у вас меньше работы.
 Mafia26 февр. 2013 г., 21:37
Также полезно, если вы хотите использовать имя функции внутри функции (для другого использования). Нравится создавать ссылки на основе функции и т. Д. (Например:function name1() затем используйтеname1 снова внутри), сэкономит много времени, если у вас будет один и тот же шаблон для множества функций.
 DisgruntledGoat17 июн. 2009 г., 13:33
Просто из любопытства, когда в этом есть необходимость? Можно ли создавать функции, названия которых вы не знаете?

Ответы на вопрос(4)

Вы можете использоватьмагические константы __METHOD__ (включает название класса) или__FUNCTION__ (только имя функции) в зависимости от того, является ли это методом или функцией ... =)

 07 июл. 2011 г., 10:59
+1, __METHOD__ более конкретно, чем__FUNCTION__.
 17 июн. 2009 г., 13:16
METHOD включает в себя имя класса,FUNCTION это просто так. Последнее одинаково доступно в методе класса.
 17 июн. 2009 г., 22:05
Это правда. Но часто бывает полезно получить MyClass :: methodName вместо methodName.

Если вы используете PHP 5, вы можете попробовать это:

function a() {
    $trace = debug_backtrace();
    echo $trace[0]["function"];
}
 15 нояб. 2013 г., 10:13
Это невероятно ресурсоемкий. С помощьюFUNCTION или жеMETHOD гораздо эффективнее. debug_backtrace () отлично подходит, если вам нужно больше, чем просто имя функции.
 25 апр. 2015 г., 10:56
ЭТОONLY CORRECT WAY я нашел !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!! так как__FUNCTION__ возвращает имя родительской функции (когда текущая функция включена в родительскую функцию)
 15 апр. 2014 г., 20:11
Это плохая практика, чтобы использовать debug_backtrace () для этой цели
 13 февр. 2016 г., 19:42
@tazo todua. можешь привести пример?
<?php

  class Test {
     function MethodA(){
         echo __FUNCTION__ ;
     }
 }
 $test = new Test;
 echo $test->MethodA();
?>

Результат: "Метод A";

 02 апр. 2018 г., 11:27
Хотя этот фрагмент кода может быть решением,including an explanation действительно помогает улучшить качество вашего поста. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин, по которым вы предлагаете код.
Решение Вопроса

Точный способ заключается в использовании__FUNCTION__ предопределенная магическая константа.

Пример:

class Test {
    function MethodA(){
        echo __FUNCTION__;
    }
}

Результат:MethodA.

 17 авг. 2018 г., 02:26
Пробовал на PHP & gt; = 4
 23 июл. 2018 г., 13:57
Точно так же, как получить имя класса?
 21 июл. 2017 г., 15:58
FUNCTION работает и для неклассовых функций. Пробовал на PHP 7.0.8.
 30 июл. 2018 г., 15:25
@KiranReddy Для этого тоже есть волшебная константа:__CLASS__, Или вы можете сделатьget_class($this).

Ваш ответ на вопрос