我刚刚开始使用PHP-DI
并且很棒,但我无法解决一个问题。
这是我的服务定义
<?php
return [
'services.report'=> DI\autowire( '\CRM\Report\Service\ReportService' ),
'\CRM\Report\Service\ReportServiceContract' => DI\get ( 'services.report' )
];
我的课程定义如下
class ReportService implements ReportServiceContract {
private $repository;
/**
* ReportService constructor.
* @Inject("repositories.report_tasks")
*
* @param $repository
*/
public function __construct( $repository ) {
$this->repository = $repository;
var_dump( $this->repository->getReportTaskById( 1 )->getDateSubmitted() );
}
}
有了这个配置,我收到以下错误
无法解析条目“services.report”:参数$ repository of __construct()没有定义或猜测的值 完整定义: 对象( class = \ CRM \ Report \ Service \ ReportService 懒惰=假 __构造( $ repository =#UNDEFINED# ) )
我试图调试源代码,并注意到即使是AnnotationReader
实例也没有创建。
但使用以下定义时
<?php
return [
'services.report' => DI\autowire( '\CRM\Report\Service\ReportService' )->constructorParameter('repository',DI\get('repositories.report_tasks')),
'\CRM\Report\Service\ReportServiceContract' => DI\get ( 'services.report' )
];
一切正常。
我的配置有什么问题?
答案 0 :(得分:0)
要使用注释,需要启用它们(默认情况下禁用它们):http://php-di.org/doc/annotations.html#installation
默认情况下禁用注释 。为了能够使用它们,首先需要使用Composer安装Doctrine Annotations库:
ContainerBuilder
然后您需要配置
$containerBuilder->useAnnotations(true);
以使用它们:base