Я создаю анонимный объект следующим образом:
$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();
});
Но используя анонимные объекты.