// define some services
$container['session_storage'] = static function (Container $container): SessionStorage {
return new SessionStorage('SESSION_ID');
};
$container['session'] = static function (Container $container): Session {
return new Session($container['session_storage']);
};
// get the session object
$session = $container['session'];
// the above call is roughly equivalent to the following code:
// $storage = new SessionStorage('SESSION_ID');
// $session = new Session($storage);
// define some services
$container->factory('session_storage', static function (): SessionStorage {
return new SessionStorage('SESSION_ID');
});
$container->factory('session', static function (ContainerInterface $container): Session {
return new Session($container->get('session_storage'));
});
// get the session object
$session = $container->get('session');
// the above call is roughly equivalent to the following code:
// $storage = new SessionStorage('SESSION_ID');
// $session = new Session($storage);
$container['session'] = $container->factory(static function (Container $container): Session {
return new Session($container['session_storage']);
});
$container->prototypeFactory('session', static function (ContainerInterface $container): Session {
return new Session($container->get('session_storage'));
});
// define some parameters
$container['cookie_name'] = 'SESSION_ID';
$container['session_storage_class'] = 'SessionStorage';
$container['session_storage'] = static function (Container $container): SessionStorage {
return new $container['session_storage_class']($container['cookie_name']);
};
// define some parameters
$container->factory('cookie_name', new Parameter('SESSION_ID'));
$container->factory('session_storage_class', new Parameter('SessionStorage'));
$container->factory('session_storage', static function (ContainerInterface $container): SessionStorage {
$sessionStorageClass = $container->get('session_storage_class');
return new $sessionStorageClass($container->get('cookie_name'));
});
$container['random_func'] = $container->protect(static function (): int {
return rand();
});
$container->factory('random_func', new Parameter(static function (): int {
return rand();
}));
$container['session_storage'] = static function (Container $container): SessionStorage {
return new $container['session_storage_class']($container['cookie_name']);
};
$container->extend('session_storage', static function ($storage, $c): SessionStorage {
$storage->...();
return $storage;
});
$container->factory('session_storage', static function (ContainerInterface $container): SessionStorage {
$sessionStorageClass = $container->get('session_storage_class');
return new $sessionStorageClass($container->get('cookie_name'));
});
$container->factory('session_storage', static function (ContainerInterface $c, callable $previous): SessionStorage {
$storage = $previous($c);
$storage->...();
return $storage;
});
class FooProvider implements Pimple\ServiceProviderInterface
{
public function register(Container $pimple)
{
$container['session_storage'] = static function (Container $container): SessionStorage {
return new $container['session_storage_class']($container['cookie_name']);
};
}
}
$pimple->register(new FooProvider());
class FooProvider
{
public function __invoke(): array
{
return [
'session_storage' => static function (ContainerInterface $container): SessionStorage {
$sessionStorageClass = $container->get('session_storage_class');
return new $sessionStorageClass($container->get('cookie_name'));
},
];
}
}
$container->factories((new FooProvider())());
$container['session'] = static function (Container $container): Session {
return new Session($container['session_storage']);
};
$sessionFunction = $container->raw('session');
There is no equivalent to this functionality.