Можно ли отправить массив с моего контроллера в команду?
Мой метод контроллера и массив var:
$myArray = array("foo"=>"foo", "bar" => "bar");
$process = new Process('php ../bin/console app:my-command'); //how to send myArray
$process->start();
Моя команда:
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln([
'Show my array below'
]);
//print_r($myArray);
Спасибо за ответ :) В конкретном случае мой контроллер получает файл пользователя, который я форматирую и импортирую в свою базу данных. Но импорт слишком длинный, поэтому я хотел создать подпроцесс (с компонентом Process) для импорта. И я не знаю, как передать переменную users (массив) в команду с моего контроллера.
Вы можете сериализовать массив, а затем просто передать его как обычный аргумент.
вот так: $process = new Process('php ../bin/console app:my-command ' . $mySerializedVar); Не работает: / У меня такая ошибка: Команда & quot; php ../bin/console app: elhibited-user a: 1: {s: 4: & quot; test & quot ;; s: 4: & quot; test & quot ;;} & quot; не смогли.
Возможно, потребуется немного кодирования: php.net/manual/en/function.base64-encode.php Тот факт, что это оказалось проблемой, вероятно, указывает на то, что вам не следует этого делать.
Оно работает !!! Спасибо, Cerad! :)
Если вам нужна команда, я бы предложил использовать систему очередей, такую как rabbit или что-то еще, и позволить потребителю сделать это: вы заполняете (так называемое) «сообщение» массивом, а затем отправляете (или публикуете) сообщение в очередь.






Правильный способ сделать это - абстрагировать функциональные возможности вашей команды в выделенную службу, а затем использовать службу из команды и из контроллера.