I discovered an interesting thing. The class name string must be accessed directly from "flat" variable. Late static binding code that get's it's variable from array that is passed by class instance, throws an syntax error. Bug?
<?php
class A {
public $metadata = array('class' => 'A');
public static function numbers()
{
return 123;
}
}
$instance = new A();
var_dump( $instance->metadata['class']::numbers() );
$class_name = $instance->metadata['class'];
var_dump( $class_name::numbers() );
$arr = array('class' => 'A');
var_dump( $arr['class']::numbers() );
?>