Accessing class constant trough property doesn't work

Viewed 682

Example:

class LOL{
  const
    FOO = 1;
}

$x = new LOL;
$arr = array('x' => $x);

echo $x::FOO; // works
echo $arr['x']::FOO; // works too

But if I make my class instance a property, I can't access the constant anymore:

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();

:(

I know I can just do echo LOL::FOO, but what if the class name is unknown? From that position I only have access to that object/property, and I really don't want that WWW class to be "aware" of other classes and their names. It should just work with the given object

3 Answers
Related