FROSTY!?, В Pimple нет ничего сложного. Во первых нужно понять, что это обычный контейнер для объектов. Он может содержать в себе всё что угодно. Эти объекты так же называют службами/сервисами.
С помощью share() сохраняем объект в контейнере. Причем объект не будет создан сразу а только после того, как мы обратимся к нему напрямую.
Пример:
$c = new \Pimple();
$c['serive'] = $c->share(function ($c) {
return new \StdClass();
}); // Объект еще не создан
$c['service']; // В этом момент вызывается конструктор класса \StdClassВ новых версиях нет нужды оборачивать функцию в share. Пишешь просто $c['service'] = function ($c) {}
Есть еще возможность при каждом обращении создавать новый экземпляр через \\Pimple::factory()
Можно просто что-нибудь записать в него $pimple['some_value'] = true;
Если нужно сохранить функцию, то юзаешь protect()
И т.д. в доке всё хорошо описано.