带有可变函数名的PHP不明确代码


PHP ambiguous code with variable function names

考虑以下

Class someController {
    public static $layout = 'index';
}

然后在另一个范围

$layout = 'default';
$controller = 'someController';
if(property_exists($controller, 'layout')){
    $layout = $controller::$layout;
}

那么$layout的内容是什么?它将尝试访问someController::$layout还是someController::default

当PHP解析代码时,静态类变量的引用优先于独立变量。

编辑:事实上,解析器甚至不认为$controller::$layout引用了$layout变量,因为它使用::作为问题注释中提到的@Paul Crovella。