![]() |
acceder a metodo estatico quiero acceder a un metodo estatico de una clase. El problema es que el nombre de esa clase esta en una variable $nombreClase Entonces yo hago: $valorQueMeDevuelve= $nombreClase::nombreMetodo(); y me da error, supongo que es porque piensa que $nombreClase es alguna instancia o algo. Como puedo acceder a dicho metodo? |
Re: acceder a metodo estatico Hola Interesante tu pregunta :-) probé tu planteamiento y sale este error: Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ';' .... Supongo que no se puede porque $$ se usa con variables - espacio de memoria- , y tu quieres usarlo con el nombre de la clase -que no tiene un espacio de memoria hasta que lo instancias- Por alli que hay un truco, no se? Pero se me ocurre que podrías usar polimorfismo para resolver tu problema. Claro, estoy asumiendo que tienes varias clases con el método estático, y que se te hace mas fácil usar una variable variable para llamar al método. Saludos Mr. Anderson |
Re: acceder a metodo estatico lo siento pero no entiendo muy bien lo k me quieres decir. Mi problema es basicamente que yo el nombre de la clase lo tengo dentro de una variable. tonces si hago $valorQueMeDevuelve= $nombreClase::nombreMetodoEstatico(); esto me tira el error que tu comentas arriba.........necesito que de alguna forma se de cuenta que $nombreClase es el nombre de la clase.........como si pusiera........noticias::nombreMetodoEstatico() un saludo |
Re: acceder a metodo estatico Entiendo que si no tenes PHP 5.3 > no podes hacer lo que querés. Alternativa: class t { static private $s = 'probando'; static function test() { return self::$s; } } $nombreClase = 't'; eval($nombreClase."::test();"); Peligroso, pero alternativa al fin. más info: http://ar2.php.net/manual/en/language.oop5.constants.php Saludos. |
Re: acceder a metodo estatico tengo php 5.2.5. me recomiendas actualizarme? mi web sta en progreso y no creo k sufriera problemas,no? ai cambios que me podrian dar problemas al cambiar de version? y de hosting, k tal¿ pk aber si vo ya cambiar.......y luego no va a aber ni un hosting que soporte esa version xD Un saludoy gracias |
Re: acceder a metodo estatico No en absoluto, la release estable de php actualmente es la versión que tienes. El eval no es tan grave siempre que $nombreClase este validado. No puede ser un input directo del usuario porque te podría ejecutar código arbitrario. Una validación podría ser mediante class_exists. Saludos. |
Re: acceder a metodo estatico que puede ocurrir si no esta validado? a parte de logicamente de si no existe dicha clase...la compilacion cascaria.........pero bueno.......podria generar algun bug de seguridad o algo? un saludo |
Re: acceder a metodo estatico Claro, imaginate que vos recibis la variable a partir de un input del usuario y no la validas: Código: $nombreClase = $_GET['nombre'];pero imagina que un usuario te envie por url algo como system('rm -rf * //'). Esa instrucción será evaluada por eval y te reventará el directorio actual. Bueno y si el usuario tiene imaginación podría hacerte muchisimas cosas más. Ahora si vos validas antes que se cumpla in_array($nombreClase,$listaDeClases,TRUE). No deberías tener problemas. Para más info mira la documentación de eval: http://ar.php.net/eval |
Re: acceder a metodo estatico Trasladado a Orientado a Objetos. Puedes hacer simplemente esto: Código PHP: |
| La zona horaria es GMT -6. Ahora son las 03:10. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.