¿Es posible?¿Cómo obtengo el nombre de la función dentro de una función en PHP?
function test()
{
echo "function name is test";
}
¿Es posible?¿Cómo obtengo el nombre de la función dentro de una función en PHP?
function test()
{
echo "function name is test";
}
Esta es la forma más precisa. FUNCIÓN http://www.php.net/manual/en/language.constants.predefined.php
Ejemplo:
class Test {
function MethodA(){
echo __FUNCTION__ ;
}
}
Resultado: "MethodA";
__FUNCTION__ funciona también para funciones que no son de clase. Probé en PHP 7.0.8. – mvsagar
Puede utilizar el magic constants__METHOD__
(incluye el nombre de la clase) o __FUNCTION__
(solo funcionan nombre) dependiendo de si se trata de un método o una función ... =)
__METHOD__ incluye el nombre de la clase, __FUNCTION__ es solo eso. Este último está igualmente disponible en el método de una clase. –
Eso es verdad. Pero a menudo es útil obtener MyClass :: methodName en lugar de methodName. – PatrikAkerstrand
+1, '__METHOD__' es más específico que' __FUNCTION__'. – l0b0
Si está usando PHP 5 se puede tratar esto:
function a() {
$trace = debug_backtrace();
echo $trace[0]["function"];
}
Esto es increíblemente intensivo en recursos. Usar __FUNCTION__ o __METHOD__ es mucho más eficiente. debug_backtrace() es genial si necesita algo más que el nombre de la función. –
Es una mala práctica usar debug_backtrace() para este propósito –
ESTE ES EL ** SOLO CORRECTO ** lo he encontrado !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!! porque '__FUNCTION__' devuelve el nombre de la función principal (cuando la función actual se incluye en la función principal) –
Sólo por curiosidad, ¿cuándo hay una necesidad de esto? ¿Es posible crear funciones de las que no se conoce el nombre? – DisgruntledGoat
Un posible uso sería registrar su ejecución. Si está escribiendo "He cometido un error". __FUNCTION__ a un archivo de registro o algo así. De esta manera, si se cambia el nombre de la función, no tiene que preocuparse de que la persona recuerde cambiar el mensaje de registro. –
¡Se necesita para iniciar sesión! gracias por preguntar :) – SublymeRick