Проблема с Symfony 4 AbstractController с количеством параметров - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь написать API в Symfony 4. Я столкнулся с проблемой с методами моего контроллера при попытке использовать DependencyInjection для созданного мной класса API сервиса. Я пробовал несколько разных способов написания кода и не могу понять его.

https://symfony.com/doc/current/components/dependency_injection.html

Я могу создать метод getNext () (вместо get () ниже), и код будет функционировать, как и ожидалось, но если я попытаюсь использовать метод get (), я получу ошибку. Это основные участвующие классы. Большая часть кода была удалена.

class AppointmentController extends AbstractController
{

    /**
     * @Route("/appointment/getNext", name="appointment/getNext")
     * 
     */
    public function get(string $id = null, CernerFhir $fhirApi)
    {
        $request = Request::createFromGlobals();
        ...more code...
    }
}        

class CernerFhir
{

    public function __construct(LoggerInterface $logger, ParameterBagInterface $params)
    {
        $this->logger = $logger;
        $this->params = $params;
        }
    }
}

Предупреждение. Объявление App \ Controller \ AppointmentController :: get (? String $ id, App \ Service \ CernerFhir $ fhirApi) должно быть совместимо с Symfony \ Bundle \ FrameworkBundle \ Controller \ AbstractController :: get (string $ id)

1 Ответ

0 голосов
/ 14 сентября 2018

AbstractController использует интерфейс, который определяет метод get () с конкретным номером параметра и типом возвращаемого значения. Если вы не хотите перезаписывать его метод get (который я не рекомендую), вы должны написать его так, чтобы он был совместим с его определением в интерфейсе.

http://php.net/manual/en/language.oop5.interfaces.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...