<?php
class LOL{
const
FOO = 1;
}
$x = new LOL;
$arr = array('x' => $x);
echo $x::FOO; // works
echo $arr['x']::FOO; // works too
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();
11
Fatal error: Uncaught ArgumentCountError: Too few arguments to function WWW::__construct(), 0 passed in /in/jCA7p on line 26 and exactly 1 expected in /in/jCA7p:17
Stack trace:
#0 /in/jCA7p(26): WWW->__construct()
#1 {main}
thrown in /in/jCA7p on line 17
Process exited with code 255.
Output for 7.0.0 - 7.0.20
11
Warning: Missing argument 1 for WWW::__construct(), called in /in/jCA7p on line 26 and defined in /in/jCA7p on line 17
Notice: Undefined variable: lol in /in/jCA7p on line 18
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/jCA7p:22
Stack trace:
#0 /in/jCA7p(27): WWW->doSMth()
#1 {main}
thrown in /in/jCA7p on line 22
Process exited with code 255.
Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting ',' or ';' in /in/jCA7p on line 22
Process exited with code 255.
Output for 5.3.29
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ';' in /in/jCA7p on line 22
Process exited with code 255.
Output for 4.3.0
Parse error: parse error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/jCA7p on line 4
Process exited with code 255.