我正在重建我当前的代码,我正在尝试使用依赖注入。我已经下载了Pimple并在一个文件中,我试图为自己创建一些示例。在doc中,我来到方法扩展,但我无法使其工作。对于测试,我创建了简单的类:
class ExtendClass
{
private $extend = 'false';
public function extendIt()
{
$this->extend = 'true';
}
}
我创建了简单的对象, $ DI 是Pimple \ Container的实例:
$DI['extend'] = function( $c )
{
return new ExtendClass();
};
我试图用它扩展它:
$DI->extend( 'extend', function( $extend, $c )
{
$extend->extendIt();
return $extend;
} );
但它给了我这个错误:
带有消息'Identifier'的未捕获异常'InvalidArgumentException' “extend”不包含对象定义。
所以我找到了nad发现的容器,我需要在我的类中添加方法__invoke,所以我添加了它并使这个方法返回实例:
class ExtendClass
{
private $extend = 'false';
public function __invoke()
{
return $this;
}
public function extendIt()
{
$this->extend = 'true';
}
}
但之后我收到了这个错误:
RuntimeException:无法覆盖冻结服务“extend”。
有人可以解释一下我做错了什么吗?感谢。
答案 0 :(得分:0)
你需要扩展这样的服务:
$DI->extend( 'extend', function($app)
{
$app['extend']->extendIt();
return $app['extend'];
} );