在这里抛出这个因为我无法找到关于此错误的大量信息,我花了大约2个小时才找到它。 面掌
在container.php中 - > DBService定义为:
DBServiceInterface::class => function (ContainerInterface $c) {
return new DBService(
$c->get('settings.database'),
$c->get(SessionInterface::class),
$c->get(ValidatorInterface::class)
);
},
类型:DI \ Definition \ Exception \ InvalidDefinition 消息:条目" PVS \ HomeController"无法解决:输入" PVS \ DBService \ DBService"无法解析:__construct()的参数$ settings没有定义或可猜测的值完全定义:Object(class = PVS \ DBService \ DBService lazy = false __construct($ settings =#UNDEFINED#$ session = get(PVS \ Helpers \ Storage) \ Contracts \ SessionInterface)$ validator = get(PVS \ Validation \ Contracts \ ValidatorInterface)))完整定义:Object(class = PVS \ HomeController lazy = false __construct($ container = get(Psr \ Container \ ContainerInterface)$ view = get (Slim \ Views \ Twig)$ router = get(Slim \ Router)$ flash = get(Slim \ Flash \ Messages)$ session = get(PVS \ Helpers \ Storage \ Contracts \ SessionInterface)$ db = get(PVS \ DBService) \ DBService))) 档案:
所以我开始在容器或DBService.php本身中查找问题。问题实际上是在错误消息第一行的控制器中。
答案 0 :(得分:0)
HomeController的构造函数定义为:
public function __construct (ContainerInterface $container,
Twig $view,
Router $router,
Messages $flash,
SessionInterface $session,
DBService $db) { <--- Problem here
我把它改为:
public function __construct (ContainerInterface $container,
Twig $view,
Router $router,
Messages $flash,
SessionInterface $session,
DBServiceInterface $db) { <---
请注意,我现在正在调用Interface而不是具体的实现,它与上面发布的DI容器相匹配。
答案 1 :(得分:0)
我也有同样的例外,简而言之,我的问题是,一个类继承了其父级的构造函数,而父级__constructor
不是公开的而是受保护的。
也许可以节省别人的研究时间。