From 74d90e4b782fb749a4445a15c4706c6f0dd20be3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mor=C3=A1vek?= Date: Fri, 9 Feb 2024 07:10:27 +0100 Subject: [PATCH] Fix build against latest nette/application --- phpstan.tests.neon.dist | 4 ++++ .../Fixtures/TestPresenter.php | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/phpstan.tests.neon.dist b/phpstan.tests.neon.dist index 75935bf..88d996e 100644 --- a/phpstan.tests.neon.dist +++ b/phpstan.tests.neon.dist @@ -38,3 +38,7 @@ parameters: message: "#^Cannot cast mixed to string\\.$#" count: 1 path: tests/FileUploadControl/Fixtures/DummyTranslator.php + - # nette/application 3.1 compatibility + message: "#^Parameter .* of method Nette\\\\Application\\\\UI\\\\Presenter\\:\\:injectPrimary\\(\\) expects .*, .* given\\.$#" + count: 1 + path: tests/FileUploadControl/Fixtures/TestPresenter.php diff --git a/tests/FileUploadControl/Fixtures/TestPresenter.php b/tests/FileUploadControl/Fixtures/TestPresenter.php index d1028cd..3c01dc8 100644 --- a/tests/FileUploadControl/Fixtures/TestPresenter.php +++ b/tests/FileUploadControl/Fixtures/TestPresenter.php @@ -8,6 +8,7 @@ use Nette\Application\Routers\SimpleRouter; use Nette\Application\UI\Form; use Nette\Application\UI\Template; +use ReflectionMethod; final class TestPresenter extends Nette\Application\UI\Presenter { @@ -26,11 +27,19 @@ public static function create(?Nette\Http\IRequest $httpRequest = null, ?callabl $presenter->formConfigurator = $formConfigurator; - $httpRequest ??= $presenter->createHttpRequest(); - $httpResponse = $presenter->createHttpResponse(); - $templateFactory = $presenter->createTemplateFactory(); - $router = new SimpleRouter(); - $presenter->injectPrimary(null, null, $router, $httpRequest, $httpResponse, null, null, $templateFactory); + $primaryDependencies = []; + $rc = new ReflectionMethod($presenter, 'injectPrimary'); + foreach ($rc->getParameters() as $parameter) { + if ($parameter->isDefaultValueAvailable()) { + continue; + } + $primaryDependencies[$parameter->getName()] = null; + } + $primaryDependencies['httpRequest'] = $httpRequest ?? $presenter->createHttpRequest(); + $primaryDependencies['httpResponse'] = $presenter->createHttpResponse(); + $primaryDependencies['router'] = new SimpleRouter(); + $primaryDependencies['templateFactory'] = $presenter->createTemplateFactory(); + $presenter->injectPrimary(...$primaryDependencies); $presenter->setParent(null, 'Test'); $presenter->changeAction('default');