我正在创建一个匿名对象,如下所示:
$factory = (object) [ 'router' => new AltoRouter(), 'user' => null ];
然后我像这样加载用户:
if( !empty( $_SESSION['usid'] ) )
$factory->user = ( new UserController() )->loadUserBySession( $_SESSION['usid'] );
但是,AltoRouter使用函数来动态映射URI,而这样的示例是:
$factory->router->map('GET|POST', '/pretty/url', function() {
echo 'But this cannot access the $factory->user object to get the current user.';
});
我知道我可以将function()
更改为function() use ($factory)
,但是可以在有权访问$factory
的范围之外激活一条路由。我想实现以下目标:
class Factory {
public static $user;
}
$factory->router->map('GET|POST', '/pretty/url', function() {
Factory::$user->doSomething();
});
但是使用匿名对象。