我刚开始使用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”:__construct() 的参数 $repository 没有定义或猜测的值 完整定义:对象 ( class = \CRM\Report\Service\ReportService lazy = false __construct( $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' )
];
一切正常。
我的配置有什么问题?