Аргумент 1, передаваемый в app \ Controllers \ Controller :: __ construct (), должен быть экземпляром Interop \ Container \ ContainerInterface - PullRequest
0 голосов
/ 11 февраля 2020

Ошибка приложения Slim

    The application could not run because of the following error:
    Details
    Type:TypeError
    Message:Argument 1 passed to app\Controllers\Controller::__construct() must be an instance of Interop\Container\ContainerInterface, instance of Slim\Container given, called in
        /opt/lampp/htdocs/project/vendor/slim/slim/Slim/CallableResolver.php on line 102

Я получаю эту ошибку при вызове любого метода. Другие контроллеры расширяют этот контроллер Контроллер. php файл выглядит следующим образом -

<?php

namespace app\Controllers;

use Interop\Container\ContainerInterface as ContainerInterface;

abstract class Controller
{
    protected $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function __get($property)
    {
        if($this->container->{$property})
        {
            return $this->container->{$property};
        }
    }
}

1 Ответ

0 голосов
/ 11 февраля 2020

Slim\Container реализует непосредственно Psr\Container\ContainerInterface вместо интерфейса из устаревшего пакета блокировки . Ваш конструктор должен также изменить typehint на версию PSR.

...