代码之家  ›  专栏  ›  技术社区  ›  Aaron Bar

无法解析PHP-DI:无法解析条目:\uu construct()的参数xxxxxx没有定义值或可猜测的完整定义

  •  2
  • Aaron Bar  · 技术社区  · 7 年前

    把这个扔到这里是因为我找不到关于这个错误的很多信息,我花了大约2个小时才找到它。 面部手掌

    在容器中。php->DBService定义为:

        DBServiceInterface::class => function (ContainerInterface $c) {
            return new DBService(
                $c->get('settings.database'), 
                $c->get(SessionInterface::class), 
                $c->get(ValidatorInterface::class)
        );
        },
    

    类型:DI \定义\异常\无效定义 消息:无法解析条目“PVS\HomeController”:无法解析条目“PVS\DBService\DBService”:参数$settings of \uu construct()没有定义值或可猜测的完整定义:Object(class=PVS\DBService\DBService lazy=false \uu construct($settings=\35; UNDEFINED \35;$session=get(PVS\Helpers\Storage\Contracts\SessionInterface)$validator=get(PVS\Validation\Contracts\ValidatorInterface)))完整定义:对象(class=PVS\HomeController lazy=false\uu构造($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本身。问题实际上出现在错误消息第一行的控制器中。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Aaron Bar    7 年前

    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) { <--- 
    

    请注意,我现在调用的是接口,而不是具体的实现,它与上面发布的DI容器相匹配。

        2
  •  0
  •   Samuel Gfeller    4 年前

    我也有同样的例外,简而言之,我的问题是一个类继承了其父类和父类的构造函数 __constructor 不是公开的,但受到保护。

    也许这可以为其他人节省几个小时的研究时间。

    推荐文章