Solo por curiosidad, ¿cuándo hay una necesidad de esto? ¿Es posible crear funciones de las que no sabes el nombre?
DisgruntledGoat
37
Un posible uso sería registrar su ejecución. Si está escribiendo "Tuve un error en". FUNCIÓN 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.
Brian Ramsay
1
¡Lo necesitaba para iniciar sesión! gracias por preguntar :)
SublymeRick
2
También es útil si desea usar el nombre de la función dentro de la función (para otro uso). Le gustaría construir enlaces basados en la función, etc. (por ejemplo: function name1()luego use name1 nuevamente dentro), le ahorraría mucho tiempo si tiene la misma plantilla para muchas funciones.
Mafia
1
@DisgruntledGoat: es útil si crea funciones manualmente y no desea editar el mensaje de error para cada función. Agregarlo al mensaje de error significa que tiene menos trabajo.
FUNCIÓN también funciona para funciones que no son de clase. Probado en PHP 7.0.8.
mvsagar
De la misma manera, ¿cómo obtener el nombre de la clase?
Kiran Reddy
2
@KiranReddy Hay una constante mágica para eso también: __CLASS__. O puedes hacer get_class($this).
Sean the Bean
1
Probado en PHP> = 4
Nabi KAZ
98
Puede usar las constantes mágicas__METHOD__ (incluye el nombre de la clase) o __FUNCTION__(solo el nombre de la función) dependiendo de si es un método o una función ... =)
Esto es increíblemente intensivo en recursos. Usar FUNCTION o METHOD es mucho más eficiente. sin embargo, debug_backtrace () es excelente si necesita algo más que el nombre de la función.
Luke Cousins el
2
Es una mala práctica usar debug_backtrace () para este propósito
Marcio Mazzucato
1
Esta es la única forma correcta que he encontrado !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!! porque __FUNCTION__devuelve el nombre de la función principal (cuando la función actual se incluye en la función principal)
Si bien este fragmento de código puede ser la solución, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código.
function name1()
luego use name1 nuevamente dentro), le ahorraría mucho tiempo si tiene la misma plantilla para muchas funciones.Respuestas:
La forma precisa es utilizar la
__FUNCTION__
constante mágica predefinida .Ejemplo:
Resultado:
MethodA
.fuente
__CLASS__
. O puedes hacerget_class($this)
.Puede usar las constantes mágicas
__METHOD__
(incluye el nombre de la clase) o__FUNCTION__
(solo el nombre de la función) dependiendo de si es un método o una función ... =)fuente
Si está utilizando PHP 5, puede probar esto:
fuente
__FUNCTION__
devuelve el nombre de la función principal (cuando la función actual se incluye en la función principal)Resultado: "Método A";
fuente