Ответ 1
В http://phpmaster.com/dependency-injection-with-pimple/, в котором объясняется, как использовать Pimple в качестве DIC.
Другой (но не обязательно рекомендуемый) подход заключается в том, чтобы вставить контейнер во все необходимые ему компоненты (например, вы используете его как ServiceLocator), а затем вы просто выполняете то, что в документации говорится, что вы должны сделать, чтобы получить объект от Pimple
class SomeClassThatNeedsSession
{
private $session;
public function __construct(Pimple $container)
{
$this->session = $container['session'];
}
}
Другими словами, вы просто извлекаете то, что вам нужно, и Pimple будет обрабатывать время жизни этого объекта, например. нужно ли его создавать или использовать повторно. OffsetGet является частью интерфейса ArrayAccess
, который позволяет вам получить доступ к объекту, подобному массиву, поэтому, когда вы выполняете $container['foo']
, Pimple проверяет, имеет ли он ограничение, определенное для foo, независимо от того, является ли его только некоторый параметр и соответствующим образом собраны службы.