PHP-DI Вызовите метод, у которого параметр по умолчанию равен нулю

Я пытаюсь использовать вызов PHP-DI для метода с параметром по умолчанию, но получаю эту ошибку

Неустранимая ошибка: Uncaught Invoker\Exception\NotEnoughParametersException: невозможно вызвать вызываемый объект, поскольку для параметра 1 не задано значение...

PS: PHP-DI 6

  Classe Bill
  {

  public function index($slug=null,Request $request){
            //----
       }
  }

use DI\ContainerBuilder;

$containerBuilder = new ContainerBuilder;
$container = $containerBuilder->build();

$controller = 'Bill' ;
$method = 'index';
$parameters = []; 
$response = $container->call([$controller,$method], $parameters);

person Ray Carnegie    schedule 02.04.2019    source источник
comment
Решено путем определения параметра с именем $slug   -  person Ray Carnegie    schedule 31.07.2019


Ответы (2)


Работает:

class TestController { function doAction(Request $request, int $id = null) {} }

Не работает:

class TestController { function doAction(int $id = null, Request $request) {} }

Источник: https://github.com/PHP-DI/Slim-Bridge/issues/37#issuecomment-368954250

person Damian972    schedule 30.07.2019
comment
Вы можете извлечь резюме из ссылки. Это поможет читателю получить некоторое представление о ветке, не переходя по ссылке. - person Allen Zhang; 30.07.2019
comment
Спасибо за совет. - person Damian972; 31.07.2019

Вам необходимо указать значение для параметра $slug.

Когда параметр является необязательным перед необязательными параметрами, его нельзя опустить. Таким образом, вы должны указать его значение.

person Matthieu Napoli    schedule 02.04.2019
comment
@Mattieu Napoli, спасибо за самый быстрый ответ, но я хотел бы знать .. Во-первых, можно ли сделать параметры нулевыми? два: если да, могу ли я взять фрагмент в качестве примера, чтобы это сработало? - person Ray Carnegie; 02.04.2019