Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Nombre de metodo mediante una variable?

Estas en el tema de Nombre de metodo mediante una variable? en el foro de PHP en Foros del Web. Saludos, tengo una duda. creo que no es posible, pero pregunto antes de sacar cualquier conclusion. es posible instanciar una clase y luego acceder a ...
  #1 (permalink)  
Antiguo 08/07/2017, 21:49
 
Fecha de Ingreso: julio-2014
Mensajes: 12
Antigüedad: 3 años, 2 meses
Puntos: 0
Nombre de metodo mediante una variable?

Saludos, tengo una duda. creo que no es posible, pero pregunto antes de sacar cualquier conclusion.

es posible instanciar una clase y luego acceder a un metodo cullo nombre esta almacenado en una variable?

Código PHP:
$var "nuevo";
$clase = new clase();

$clase->$var
  #2 (permalink)  
Antiguo 09/07/2017, 07:00
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.068
Antigüedad: 2 años, 3 meses
Puntos: 213
Respuesta: Nombre de metodo mediante una variable?

haciendo vainas locas:

Código PHP:
Ver original
  1. class prueba
  2. {
  3.    
  4.     function __construct()
  5.     {
  6.         # code...
  7.     }
  8.  
  9.     function prueba(){
  10.         return "Hola carlos, Como Estas?";
  11.     }
  12. }
  13.  
  14. $clave = 'prueba';
  15. $p = new Prueba();
  16.  
  17. echo $p->$clave();

esto retorna Hola carlos, Como Estas?

al menos en mis pruebas si funciona
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 09/07/2017, 12:01
Avatar de hhs
hhs
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.837
Antigüedad: 4 años, 3 meses
Puntos: 336
Respuesta: Nombre de metodo mediante una variable?

Cita:
Iniciado por spiner13 Ver Mensaje
Saludos, tengo una duda. creo que no es posible, pero pregunto antes de sacar cualquier conclusion.

es posible instanciar una clase y luego acceder a un metodo cullo nombre esta almacenado en una variable?

Código PHP:
$var "nuevo";
$clase = new clase();

$clase->$var
El problema es que en tu ejemplo te falto agregar los paréntesis en la llamada al método
Código PHP:
Ver original
  1. $var = "nuevo";
  2. $clase = new clase();
  3.  
  4. $clase->$var(); // Tienes que agregar paréntesis en la llamada
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 10/07/2017, 08:41
 
Fecha de Ingreso: julio-2014
Mensajes: 12
Antigüedad: 3 años, 2 meses
Puntos: 0
Respuesta: Nombre de metodo mediante una variable?

Asi es como te das cuenta que estas haciendo una chavada xD
Claro que funciona, pero si uso un arrary, no e.e

Código PHP:
Ver original
  1. $instancia->$metodo[3]();

Error: Array to String conversion e.e
  #5 (permalink)  
Antiguo 10/07/2017, 09:00
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.068
Antigüedad: 2 años, 3 meses
Puntos: 213
Respuesta: Nombre de metodo mediante una variable?

Cita:
Iniciado por spiner13 Ver Mensaje
Asi es como te das cuenta que estas haciendo una chavada xD
Claro que funciona, pero si uso un arrary, no e.e

Código PHP:
Ver original
  1. $instancia->$metodo[3]();

Error: Array to String conversion e.e
Te comento que a mi me funciono de esta manera, retorno HOLA:

Código PHP:
Ver original
  1. class Prueba
  2. {
  3.    
  4.     function __construct()
  5.     {
  6.         # code...
  7.     }
  8.     function prueba(){
  9.         return "Hola";
  10.     }
  11. }//
  12.  
  13. $data = array('prueba','salida');
  14. $p = new Prueba();
  15.  
  16. echo $p->$data[0]();
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 10/07/2017, 09:26
Avatar de hhs
hhs
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.837
Antigüedad: 4 años, 3 meses
Puntos: 336
Respuesta: Nombre de metodo mediante una variable?

Eso es tan simple como hacer
Código PHP:
Ver original
  1. $instancia->{$metodo[3]}();
Te aconsejo que leas el manual de php http://php.net/manual/en/language.va...s.variable.php

Código PHP:
Ver original
  1. $data = array('prueba','salida');
  2. $p = new Prueba();
  3.  
  4. echo $p->$data[0]();
Eso solo funciona en las versiones 5.6, 5.5 y 5.4. La sintaxis con llaves funciona de la versión 5.4 en adelante
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por hhs; 10/07/2017 a las 09:32 Razón: se agrego nota sobre funcionamiento de las llaves
  #7 (permalink)  
Antiguo 10/07/2017, 18:29
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.068
Antigüedad: 2 años, 3 meses
Puntos: 213
Respuesta: Nombre de metodo mediante una variable?

Cita:
Iniciado por hhs Ver Mensaje
Eso es tan simple como hacer
Código PHP:
Ver original
  1. $instancia->{$metodo[3]}();
Te aconsejo que leas el manual de php http://php.net/manual/en/language.va...s.variable.php

Código PHP:
Ver original
  1. $data = array('prueba','salida');
  2. $p = new Prueba();
  3.  
  4. echo $p->$data[0]();
Eso solo funciona en las versiones 5.6, 5.5 y 5.4. La sintaxis con llaves funciona de la versión 5.4 en adelante

tienes razón. Saludos
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 10/07/2017, 20:58
 
Fecha de Ingreso: julio-2014
Mensajes: 12
Antigüedad: 3 años, 2 meses
Puntos: 0
Respuesta: Nombre de metodo mediante una variable?

Cita:
Iniciado por hhs Ver Mensaje
Eso es tan simple como hacer
Código PHP:
Ver original
  1. $instancia->{$metodo[3]}();
Te aconsejo que leas el manual de php [url]http://php.net/manual/en/language.variables.variable.php[/url]

Código PHP:
Ver original
  1. $data = array('prueba','salida');
  2. $p = new Prueba();
  3.  
  4. echo $p->$data[0]();
Eso solo funciona en las versiones 5.6, 5.5 y 5.4. La sintaxis con llaves funciona de la versión 5.4 en adelante
Mas claro el agua.
Muchas gracias por darme luz y por la documentacion.

Saludos!
  #9 (permalink)  
Antiguo 11/07/2017, 10:28
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Nombre de metodo mediante una variable?

Como nota al margen. Yo optaría por hacer scripts con un estándar, pues así en el cambio de versiones de PHP no afecta mucho o nada al código. En los 13 años que llevo programando en PHP no tenido que modificar un solo script, excepto una pagina que yo no realice y esta hecha con el framework Fuel pero le tuve que dar mantenimiento ya que cambio el PHP de su servidor de PHP 5.6 a PHP 7 y pues dejo de funcionar.

Saludos!
__________________
Un buen programa depende de la imaginación.



La zona horaria es GMT -6. Ahora son las 04:46.