Вот пример кода CFML я использую в качестве основы (также на GitHub @getFunctionCalledName.cfm):Получить имя функции Назвался, что эквивалентно getFunctionCalledName CFML в()
function f(){
echo("#getFunctionCalledName()#() called<br>");
}
f();
echo("<hr>");
g = f;
g();
Это выходы:
Р() называется
G() называется
Обратите внимание, что getFunctionCalledName()
возвращает имя ссылки, используемой для вызова функции, а не просто имя функции.
Я пытаюсь посмотреть, есть ли эквивалент в PHP. Вот мой тест, который (testFunction.php на GitHub):
Я знаю, что это __FUNCTION__
магическая константа:
function f()
{
echo sprintf("Using __FUNCTION__: %s() called<br>", __FUNCTION__);
}
f();
echo "<hr>";
$g = "f"; // as someone points out below, this is perhaps not analogous to the g = f in the CFML code above. I dunno how to simply make a new reference to a function (other than via using function expressions instead, which is not the same situation
$g();
Однако это возвращает в обоих случаях f
.
Я написал аналогичный код, пытаясь debug_backtrace()
(см. testDebugBackTrace.php), но это также ссылается на функцию как f
.
Это прекрасно, и я понимаю, почему они оба это делают. Однако мне интересно, есть ли какой-либо PHP-эквивалент getFunctionCalledName()
. Я спешу добавить это только для исследовательского упражнения: в настоящее время я перехожу от CFML к PHP, и это только что появилось, когда я демонстрировал что-то в своем блоге.
Я не уверен, если этот параметр не существует. Поскольку функции в PHP имеют фиксированное имя, это, скорее всего, то, что возвратит каждая функция или константа. – Erik
Нет сомнений в том, что это требует пониженного голосования, но было бы немного полезно, если бы вы объяснили * почему *. Я с удовольствием польский вопрос, если он в ней нуждается. –