Ejemplo:clase de Acceso a la propiedad a través constante no funciona
class LOL{
const
FOO = 1;
}
$x = new LOL;
$arr = array('x' => $x);
echo $x::FOO; // works
echo $arr['x']::FOO; // works too
Pero si hago mi instancia de clase de una propiedad, no puede acceder a la constante más:
class WWW{
protected $lol;
public function __construct($lol){
$this->lol= $lol;
}
public function doSMth(){
echo $this->lol::FOO; // fail. parse error.. wtf
}
}
$w = new WWW;
$w->doSMth();
:(
Sé que puedo hacer echo LOL::FOO
, pero ¿qué pasa si el nombre de clase es desconocido? Desde esa posición solo tengo acceso a ese objeto/propiedad, y realmente no quiero que la clase WWW esté "al tanto" de ot sus clases y sus nombres. Simplemente debería funcionar con el objeto dado
prueba this $ w = new WWW (new LOL); ? – Gntem
Pero si no se conoce el nombre de la clase, ¿cómo se puede saber que tiene 'const FOO' para empezar? (a menos que todas sus clases estén implementando alguna interfaz o ampliando alguna clase) –
porque espera que esa constante esté presente: P – Alex