Создать статическую ссылку на анонимный объект - PullRequest
0 голосов
/ 10 октября 2018

Я создаю анонимный объект следующим образом:

$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();
});

Но используя анонимные объекты.

...