Foros del Web » Programando para Internet » PHP »

nombre metodo

Estas en el tema de nombre metodo en el foro de PHP en Foros del Web. Hola, alguien me puede decir si existe alguna funcion para saber el nombre del metodo que se esta ejecutando? Es decir yo tengo esto: Código ...
  #1 (permalink)  
Antiguo 28/07/2010, 17:57
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años, 1 mes
Puntos: 43
nombre metodo

Hola,
alguien me puede decir si existe alguna funcion para saber el nombre del metodo que se esta ejecutando?
Es decir yo tengo esto:
Código PHP:
class clase{
   public function 
funcion1(){
             
//aca necesito saber el nombre del metodo (funcion1) algo asi
           
$this->Validar($user_id,$nombreMetodo);
  }

ya se que existe la funcion get_class_methods pero esta me devuelve todos los métodos de una clase, y lo que necesito es poder saber el nombre de la que se esta ejecutando sin necesidad de ponerla yo mismo a mano.
  #2 (permalink)  
Antiguo 28/07/2010, 18:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: nombre metodo

Usa ReflectionMethod para eso.

Saludos.
  #3 (permalink)  
Antiguo 28/07/2010, 19:21
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años, 1 mes
Puntos: 43
Respuesta: nombre metodo

Cita:
Iniciado por GatorV Ver Mensaje
Usa ReflectionMethod para eso.

Saludos.
Estuve viendo la ayuda de php.net de esta clase, pero por lo que vi hay que pasarle el nombre de la clase y el nombre del método, y justamente lo que quiero hacer es lo inverso obtener el nombre del método para pasarlo como parametro, sin necesidad de teclearlo.
Pero sino voy a tener que pasarlo tecleandolo jeje.
  #4 (permalink)  
Antiguo 28/07/2010, 21:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: nombre metodo

Otra cosa que podrías hacer es lanzar una excepción dentro de tu método y cacharla ahí mismo, luego usar expresiones regulares para sacar el nombre del método.

La última cosa que se me ocurre es usar el método mágico __call para interceptar la llamada, por ejemplo si quieres llamar a funcion1() renombrala a _funcion1() y luego con __call interceptas el nombre y mandas llamar a "_$nombre"

Saludos.
  #5 (permalink)  
Antiguo 29/07/2010, 09:19
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 6 meses
Puntos: 5
Respuesta: nombre metodo

Existe una constante "Magica" que contiene la información del método que actualmente se esta ejecutando: __METHOD__

El siguiente código:
Código PHP:
class A{
    protected function 
metodoProtegido(){
        echo 
__METHOD__."<br>\n";
    }
}

class 
Prueba extends A{

    public function  
__construct() {
        echo 
__METHOD__."<br>\n";
        
$this->metodoProtegido();
    }

    public function 
metodo1(){
        echo 
__METHOD__."<br>\n";
    }

    public static function 
metodoEstatico(){
        echo 
__METHOD__."<br>\n";
    }

}

$x = new Prueba();
$x->metodo1();
Prueba::metodoEstatico(); 
Tendra la siguiente salida:
Código:
Prueba::__construct
A::metodoProtegido
Prueba::metodo1
Prueba::metodoEstatico
http://www.php.net/manual/en/languag...predefined.php
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"

Etiquetas: metodo, nombre
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:03.