Foros del Web » Programando para Internet » PHP »

Acceder a constante de clase por variable

Estas en el tema de Acceder a constante de clase por variable en el foro de PHP en Foros del Web. Hola a todos, tengo definida la constante de clase @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original class Sizes {       const SMALL = ...
  #1 (permalink)  
Antiguo 21/12/2011, 07:33
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Acceder a constante de clase por variable

Hola a todos,
tengo definida la constante de clase
Código Javascript:
Ver original
  1. class Sizes {
  2.      const SMALL = 'small-image';
Y queria usar una variable para acceder a dicha constante
Código Javascript:
Ver original
  1. $size = 'SMALL';
  2. echo Sizes::$size;
Pero php lanza el mensaje
Código Javascript:
Ver original
  1. Fatal error: Access to undeclared static property: Sizes::$size in

Cabe mencionar que no puedo modificar la clase Sizes.
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 21/12/2011, 07:42
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Acceder a constante de clase por variable

proba asi
$size = 'SMALL';
echo Sizes::{$size};

pero generalmente las constantes y define se declaran como globales de clase,
antes de CLASS
  #3 (permalink)  
Antiguo 21/12/2011, 07:44
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Acceder a constante de clase por variable

Lastimosamente aquí donde estoy no tengo php instalado, intenta echo Sizes::{$size}; pienso que puede funcionar puesto que funciona con $this->{$this->algo} (por poner un ejemplo).

me cuentas...
__________________
Páginas web de alta calidad y hechas a la medida.
  #4 (permalink)  
Antiguo 21/12/2011, 07:47
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Acceder a constante de clase por variable

Mira, existen dos formas la primera es:

Código PHP:
Ver original
  1. class Sizes {
  2.      const SMALL = 'small-image';
  3. }
  4. echo Sizes::SMALL;

La otra te tocara meterle mano a la clase y cambiarla para definir las constantes como propiedades estáticas:

Código PHP:
Ver original
  1. class Sizes
  2. {
  3.    const SMALL = 'small-image';
  4.    private function __get($name)
  5.    {
  6.       if(defined("self::$name"))
  7.       {
  8.          return constant("self::$name");
  9.          
  10.       }
  11.       trigger_error ("$name  isn't defined");
  12.    }
  13. }
  14.  
  15. $objeto = new Sizes();
  16. echo $objeto->SMALL;

Espero te sirva de algo.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #5 (permalink)  
Antiguo 21/12/2011, 13:47
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: Acceder a constante de clase por variable

-El uso de llaves muestra el error:
Parse error: syntax error, unexpected '{', expecting T_STRING or T_VARIABLE or '$' in.....

-No tengo acceso a la clase Sizes
-Tengo otros constantes de clase. SMALL, LARGE, MEDIUM
lo que queria era usar una variables $size que puede tener cualquiera de estos valores (), de manera de acceder al nombre de la constante

Código Javascript:
Ver original
  1. En un controlador seteo la variables size
  2. $size = 'MEDIUM';
  3. luego otra clase de imagenes recibe dicha variable y hace uso de ella
  4.     echo Sizes::$size;
__________________
I am Doyle please insert code.

Etiquetas: clase, constante, variables
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 01:52.