* * @internal * * TODO drop when PHP 8.1 / symfony 6.1+ can be required */ class InputArgument extends BaseInputArgument { /** @var list|\Closure(CompletionInput,CompletionSuggestions):list */ private $suggestedValues; /** * @param string $name The argument name * @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL * @param string $description A description text * @param string|bool|int|float|string[]|null $default The default value (for self::OPTIONAL mode only) * @param list|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion * * @throws InvalidArgumentException When argument mode is not valid */ public function __construct( string $name, ?int $mode = null, string $description = '', $default = null, $suggestedValues = [], ) { parent::__construct($name, $mode, $description, $default); $this->suggestedValues = $suggestedValues; } /** * Adds suggestions to $suggestions for the current completion input. * * @see Command::complete() */ public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void { $values = $this->suggestedValues; if ($values instanceof \Closure && !\is_array($values = $values($input, $suggestions))) { // @phpstan-ignore-line throw new LogicException(sprintf('Closure for option "%s" must return an array. Got "%s".', $this->getName(), get_debug_type($values))); } if ([] !== $values) { $suggestions->suggestValues($values); } } } __halt_compiler();----SIGNATURE:----HOr62e4oIlOPDA0Nj+Z3qYFuUijZd+E1hbp1v3IUAkGcjw+D80hsDP5wMtqSkM1Pkj5at9xbcnAvRg+UJ+Ukf0VxObg7kkYW+5ry6JBVGRlXh8FbMmNiA+FpQQXrHyalhGPHaR+2Hb1TvBTZ7mdhHLKhsXtGKDFbpUyA1JepC7mSccB91bmx+vlh8Vijri5H8jo+TOUsqQxudxW77TOPCEd6Dgj4lNLl0INsV1Rmy8dvlZXQggbBJpBPHgd2t/CqrsUVXBDRfd+sDDniGpZyLllelsk7Xxg1d+pS5DnDCmfHF/6t/I2Nyeug0FBNGVHBKnNiPEnIULbZE6yDXuGh/JQouaNYm76SNZimtzK4piCl5sRAsoLrIobqymYrdbGxncUkvBdAPRAfxj8ckcOqcjUi8d3YdyxLh2L/EgjBPkGZk4huKRljGwaDtg62pXvYZ48/gUD9RpWaj3vWEAIO8lGFbhkJJ9B2On2uws86K69Pqvvsu4CUH0nOW4Pq4TTIxDCaiA4TYbYhMMSF1Y2CbordeNyHRVTgajCa0iekHM3ybVj6Fcb0se20ijcUv+omDxcIgbCNC0DRtvk2F16ponaXAvvdyCJcqO75JJg5AVW+5FJgsIS76gy2geQZ4QxrNQMfSrBMT61xhqDlbsEGIMg25g49VlONP9D7hBudc/s=----ATTACHMENT:----MTkyMzM4MjU4OTk3MDY1IDMxOTU2NDkyNzEzNjc5NDggNjA1MzI0MDI4NDA1NjE5NQ==