/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/Console/Interaction/Interaction.php
53 строки
2 KB
Jan Nedbal
Mark callbacks with @param-immediately-invoked-callable where applicable
05 май 2026, 18:33
05 май 2026, 18:33
24e9c36
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Interaction; use Symfony\Component\Console\Attribute\InteractiveAttributeInterface; use Symfony\Component\Console\Attribute\MapInput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @internal */ final class Interaction { public function __construct( private readonly object $owner, private readonly InteractiveAttributeInterface $attribute, ) { } /** * @param-immediately-invoked-callable $parameterResolver * * @param \Closure(\ReflectionFunction $function, InputInterface $input, OutputInterface $output): array $parameterResolver */ public function interact(InputInterface $input, OutputInterface $output, \Closure $parameterResolver): void { if ($this->owner instanceof MapInput) { $function = $this->attribute->getFunction($this->owner->createInstance($input)); $function->invoke(...$parameterResolver($function, $input, $output)); $this->owner->setValue($input, $function->getClosureThis()); return; } $function = $this->attribute->getFunction($this->owner); $function->invoke(...$args = $parameterResolver($function, $input, $output)); foreach ($function->getParameters() as $i => $parameter) { if (\is_object($args[$i]) && $spec = MapInput::tryFrom($parameter)) { $spec->setValue($input, $args[$i]); } } } }