diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5c1f10dc1..2123f112d 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -46,11 +46,6 @@ jobs: dependencies: highest allowed-to-fail: false variant: sonata-project/block-bundle:"5.x-dev as 4.999" - - php-version: '8.2' - dependencies: highest - allowed-to-fail: false - symfony-require: 4.4.* - variant: symfony/symfony:"4.4.*" - php-version: '8.2' dependencies: highest allowed-to-fail: false diff --git a/composer.json b/composer.json index 242050aa8..c692829b3 100644 --- a/composer.json +++ b/composer.json @@ -33,23 +33,23 @@ "sonata-project/seo-bundle": "^3.4", "sonata-project/twig-extensions": "^1.3 || ^2.0", "symfony-cmf/routing-bundle": "^2.1 || ^3.0", - "symfony/config": "^4.4 || ^5.4 || ^6.2", - "symfony/console": "^4.4 || ^5.4 || ^6.2", - "symfony/dependency-injection": "^4.4.3 || ^5.4 || ^6.2", - "symfony/form": "^4.4 || ^5.4 || ^6.2", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.2", - "symfony/http-foundation": "^4.4 || ^5.4 || ^6.2", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.2", - "symfony/intl": "^4.4 || ^5.4 || ^6.2", - "symfony/options-resolver": "^4.4 || ^5.4 || ^6.2", - "symfony/process": "^4.4 || ^5.4 || ^6.2", - "symfony/routing": "^4.4 || ^5.4 || ^6.2", - "symfony/security-core": "^4.4 || ^5.4 || ^6.2", - "symfony/security-http": "^4.4 || ^5.4 || ^6.2", - "symfony/serializer": "^4.4 || ^5.4 || ^6.2", - "symfony/validator": "^4.4 || ^5.4 || ^6.2", + "symfony/config": "^5.4 || ^6.2", + "symfony/console": "^5.4 || ^6.2", + "symfony/dependency-injection": "^5.4 || ^6.2", + "symfony/form": "^5.4 || ^6.2", + "symfony/framework-bundle": "^5.4 || ^6.2", + "symfony/http-foundation": "^5.4 || ^6.2", + "symfony/http-kernel": "^5.4 || ^6.2", + "symfony/intl": "^5.4 || ^6.2", + "symfony/options-resolver": "^5.4 || ^6.2", + "symfony/process": "^5.4 || ^6.2", + "symfony/routing": "^5.4 || ^6.2", + "symfony/security-core": "^5.4 || ^6.2", + "symfony/security-http": "^5.4 || ^6.2", + "symfony/serializer": "^5.4 || ^6.2", + "symfony/validator": "^5.4 || ^6.2", "twig/string-extra": "^3.0", - "twig/twig": "^2.12.1 || ^3.0" + "twig/twig": "^3.0" }, "require-dev": { "dama/doctrine-test-bundle": "^7.0", @@ -63,14 +63,14 @@ "phpstan/phpstan-symfony": "^1.0", "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^4.0 || ^5.0", + "psalm/plugin-symfony": "^5.0", "rector/rector": "^0.15", - "symfony/browser-kit": "^4.4 || ^5.4 || ^6.2", - "symfony/css-selector": "^4.4 || ^5.4 || ^6.2", - "symfony/filesystem": "^4.4 || ^5.4 || ^6.2", - "symfony/panther": "^1.0 || ^2.0", + "symfony/browser-kit": "^5.4 || ^6.2", + "symfony/css-selector": "^5.4 || ^6.2", + "symfony/filesystem": "^5.4 || ^6.2", + "symfony/panther": "^2.0.1", "symfony/phpunit-bridge": "^6.2", - "symfony/yaml": "^4.4 || ^5.4 || ^6.2", + "symfony/yaml": "^5.4 || ^6.2", "vimeo/psalm": "^4.7.2 || ^5.0" }, "conflict": { diff --git a/src/CmsManager/BCLogoutHandlerInterface.php b/src/CmsManager/BCLogoutHandlerInterface.php deleted file mode 100644 index 6eb327f65..000000000 --- a/src/CmsManager/BCLogoutHandlerInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Sonata\PageBundle\CmsManager; - -use Symfony\Component\Security\Http\Authentication\AuthenticatorManager; -use Symfony\Component\Security\Http\Logout\LogoutHandlerInterface; - -/** - * TODO: Simplify this when dropping support for Symfony 4. - * - * @psalm-suppress UndefinedClass - */ -if (class_exists(AuthenticatorManager::class) || !interface_exists(LogoutHandlerInterface::class)) { - /** @psalm-suppress UnrecognizedStatement */ - interface BCLogoutHandlerInterface - { - } -} else { - /** @psalm-suppress UnrecognizedStatement */ - interface BCLogoutHandlerInterface extends LogoutHandlerInterface - { - } -} diff --git a/src/CmsManager/CmsManagerSelector.php b/src/CmsManager/CmsManagerSelector.php index ea7875980..bc735d6c4 100644 --- a/src/CmsManager/CmsManagerSelector.php +++ b/src/CmsManager/CmsManagerSelector.php @@ -30,7 +30,7 @@ * * @author Thomas Rabaix */ -final class CmsManagerSelector implements CmsManagerSelectorInterface, BCLogoutHandlerInterface +final class CmsManagerSelector implements CmsManagerSelectorInterface { /** * @param AdminInterface $pageAdmin @@ -75,6 +75,9 @@ public function onSecurityInteractiveLogin(InteractiveLoginEvent $event): void } } + /** + * NEXT_MAJOR: Remove this method. + */ public function logout(Request $request, Response $response, TokenInterface $token): void { if ($request->hasSession()) { diff --git a/src/CmsManager/DecoratorStrategy.php b/src/CmsManager/DecoratorStrategy.php index 3aa949d22..e7fb52e24 100644 --- a/src/CmsManager/DecoratorStrategy.php +++ b/src/CmsManager/DecoratorStrategy.php @@ -36,10 +36,7 @@ public function __construct( public function isDecorable(Request $request, int $requestType, Response $response): bool { - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - if ($mainRequestType !== $requestType) { + if (HttpKernelInterface::MAIN_REQUEST !== $requestType) { return false; } diff --git a/src/Command/CleanupSnapshotsCommand.php b/src/Command/CleanupSnapshotsCommand.php index 735ec37ed..54d443944 100644 --- a/src/Command/CleanupSnapshotsCommand.php +++ b/src/Command/CleanupSnapshotsCommand.php @@ -25,10 +25,6 @@ #[AsCommand(name: 'sonata:page:cleanup-snapshots', description: 'Cleanups the deprecated snapshots by a given site')] final class CleanupSnapshotsCommand extends Command { - // TODO: Remove static properties when support for Symfony < 5.4 is dropped. - protected static $defaultName = 'sonata:page:cleanup-snapshots'; - protected static $defaultDescription = 'Cleanups the deprecated snapshots by a given site'; - public function __construct( private CleanupSnapshotBySiteInterface $cleanupSnapshotBySite, private SiteManagerInterface $siteManager @@ -38,11 +34,7 @@ public function __construct( public function configure(): void { - \assert(null !== static::$defaultDescription); - $this - // TODO: Remove setDescription when support for Symfony < 5.4 is dropped. - ->setDescription(static::$defaultDescription) ->addOption('site', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Site id') ->addOption('keep-snapshots', null, InputOption::VALUE_REQUIRED, 'Keep a given count of snapshots per page', 5); } diff --git a/src/Command/CloneSiteCommand.php b/src/Command/CloneSiteCommand.php index 19053bbe0..c191390af 100644 --- a/src/Command/CloneSiteCommand.php +++ b/src/Command/CloneSiteCommand.php @@ -31,10 +31,6 @@ #[AsCommand(name: 'sonata:page:clone-site', description: 'Clone a complete site including all their pages')] final class CloneSiteCommand extends Command { - // TODO: Remove static properties when support for Symfony < 5.4 is dropped. - protected static $defaultName = 'sonata:page:clone-site'; - protected static $defaultDescription = 'Clone a complete site including all their pages'; - public function __construct( private SiteManagerInterface $siteManager, private PageManagerInterface $pageManager, @@ -45,11 +41,7 @@ public function __construct( public function configure(): void { - \assert(null !== static::$defaultDescription); - $this - // TODO: Remove setDescription when support for Symfony < 5.4 is dropped. - ->setDescription(static::$defaultDescription) ->addOption('source-id', 'so', InputOption::VALUE_REQUIRED, 'Source site id') ->addOption('dest-id', 'd', InputOption::VALUE_REQUIRED, 'Destination site id') ->addOption('prefix', 'p', InputOption::VALUE_REQUIRED, 'Title prefix') diff --git a/src/Command/CreateBlockContainerCommand.php b/src/Command/CreateBlockContainerCommand.php index 4194b37aa..0e16b4715 100644 --- a/src/Command/CreateBlockContainerCommand.php +++ b/src/Command/CreateBlockContainerCommand.php @@ -29,10 +29,6 @@ #[AsCommand(name: 'sonata:page:create-block-container', description: 'Creates a block container in all pages for specified template code')] final class CreateBlockContainerCommand extends Command { - // TODO: Remove static properties when support for Symfony < 5.4 is dropped. - protected static $defaultName = 'sonata:page:create-block-container'; - protected static $defaultDescription = 'Creates a block container in all pages for specified template code'; - public function __construct( private PageManagerInterface $pageManager, private BlockInteractorInterface $blockInteractor @@ -42,11 +38,7 @@ public function __construct( protected function configure(): void { - \assert(null !== static::$defaultDescription); - $this - // TODO: Remove setDescription when support for Symfony < 5.4 is dropped. - ->setDescription(static::$defaultDescription) ->addArgument('templateCode', InputArgument::REQUIRED, 'Template name according to sonata_page.yml (e.g. default)') ->addArgument('blockCode', InputArgument::REQUIRED, 'Block alias (e.g. content_bottom)') ->addArgument('blockName', InputArgument::OPTIONAL, 'Block name (e.g. Bottom container)'); diff --git a/src/Command/CreateSiteCommand.php b/src/Command/CreateSiteCommand.php index 7beca497a..d62189938 100644 --- a/src/Command/CreateSiteCommand.php +++ b/src/Command/CreateSiteCommand.php @@ -30,10 +30,6 @@ #[AsCommand(name: 'sonata:page:create-site', description: 'Create a site')] final class CreateSiteCommand extends Command { - // TODO: Remove static properties when support for Symfony < 5.4 is dropped. - protected static $defaultName = 'sonata:page:create-site'; - protected static $defaultDescription = 'Create a site'; - public function __construct(private SiteManagerInterface $siteManager) { parent::__construct(); @@ -41,11 +37,7 @@ public function __construct(private SiteManagerInterface $siteManager) public function configure(): void { - \assert(null !== static::$defaultDescription); - $this - // TODO: Remove setDescription when support for Symfony < 5.4 is dropped. - ->setDescription(static::$defaultDescription) ->addOption('no-confirmation', null, InputOption::VALUE_NONE, 'Ask confirmation before generating the site') ->addOption('enabled', null, InputOption::VALUE_NONE, 'Site.enabled') ->addOption('name', null, InputOption::VALUE_OPTIONAL, 'Site.name') diff --git a/src/Command/CreateSnapshotsCommand.php b/src/Command/CreateSnapshotsCommand.php index 9a5da1934..f6f993d5d 100644 --- a/src/Command/CreateSnapshotsCommand.php +++ b/src/Command/CreateSnapshotsCommand.php @@ -30,10 +30,6 @@ #[AsCommand(name: 'sonata:page:create-snapshots', description: 'Create a snapshots of all pages available')] final class CreateSnapshotsCommand extends Command { - // TODO: Remove static properties when support for Symfony < 5.4 is dropped. - protected static $defaultName = 'sonata:page:create-snapshots'; - protected static $defaultDescription = 'Create a snapshots of all pages available'; - public function __construct( private CreateSnapshotBySiteInterface $createSnapshot, private SiteManagerInterface $siteManager @@ -43,11 +39,7 @@ public function __construct( public function configure(): void { - \assert(null !== static::$defaultDescription); - $this - // TODO: Remove setDescription when support for Symfony < 5.4 is dropped. - ->setDescription(static::$defaultDescription) ->addOption('site', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Site id'); } diff --git a/src/Command/UpdateCoreRoutesCommand.php b/src/Command/UpdateCoreRoutesCommand.php index b2e6125fc..72954e392 100644 --- a/src/Command/UpdateCoreRoutesCommand.php +++ b/src/Command/UpdateCoreRoutesCommand.php @@ -30,10 +30,6 @@ #[AsCommand(name: 'sonata:page:update-core-routes', description: 'Update core routes, from routing files to page manager')] final class UpdateCoreRoutesCommand extends Command { - // TODO: Remove static properties when support for Symfony < 5.4 is dropped. - protected static $defaultName = 'sonata:page:update-core-routes'; - protected static $defaultDescription = 'Update core routes, from routing files to page manager'; - public function __construct( private SiteManagerInterface $siteManager, private RoutePageGenerator $pageGenerator @@ -43,11 +39,7 @@ public function __construct( public function configure(): void { - \assert(null !== static::$defaultDescription); - $this - // TODO: Remove setDescription when support for Symfony < 5.4 is dropped. - ->setDescription(static::$defaultDescription) ->addOption('clean', null, InputOption::VALUE_NONE, 'Removes all unused routes') ->addOption('site', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Site id'); } diff --git a/src/Controller/BlockAdminController.php b/src/Controller/BlockAdminController.php index c5401f4df..7e2acdaae 100644 --- a/src/Controller/BlockAdminController.php +++ b/src/Controller/BlockAdminController.php @@ -48,9 +48,8 @@ public function savePositionAction(Request $request): Response $this->admin->checkAccess('savePosition'); try { - // TODO: Change to $request->query->all('filter') when support for Symfony < 5.1 is dropped. /** @var array $params */ - $params = $request->request->all()['disposition'] ?? []; + $params = $request->request->all('disposition'); if ([] === $params) { throw new HttpException(400, 'wrong parameters'); diff --git a/src/Resources/config/admin.php b/src/Resources/config/admin.php index 14c76d12a..b4b2363c2 100644 --- a/src/Resources/config/admin.php +++ b/src/Resources/config/admin.php @@ -11,24 +11,22 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Admin\BlockAdmin; use Sonata\PageBundle\Admin\Extension\CreateSnapshotAdminExtension; use Sonata\PageBundle\Admin\PageAdmin; use Sonata\PageBundle\Admin\SharedBlockAdmin; use Sonata\PageBundle\Admin\SiteAdmin; use Sonata\PageBundle\Admin\SnapshotAdmin; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 - // Use "param" function for creating references to parameters when dropping support for Symfony 5.1 $containerConfigurator->services() ->set('sonata.page.admin.page', PageAdmin::class) ->public() ->tag('sonata.admin', [ - 'model_class' => '%sonata.page.admin.page.entity%', + 'model_class' => (string) param('sonata.page.admin.page.entity'), 'controller' => 'sonata.page.controller.admin.page', 'manager_type' => 'orm', 'group' => 'sonata_page', @@ -38,15 +36,15 @@ 'icon' => '', ]) ->args([ - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.manager.site'), + service('sonata.page.manager.page'), + service('sonata.page.manager.site'), ]) ->call('addChild', [ - new ReferenceConfigurator('sonata.page.admin.snapshot'), + service('sonata.page.admin.snapshot'), 'page', ]) ->call('addChild', [ - new ReferenceConfigurator('sonata.page.admin.block'), + service('sonata.page.admin.block'), 'page', ]) ->call('setTranslationDomain', ['SonataPageBundle']) @@ -54,7 +52,7 @@ ->set('sonata.page.admin.block', BlockAdmin::class) ->public() ->tag('sonata.admin', [ - 'model_class' => '%sonata.page.admin.block.entity%', + 'model_class' => (string) param('sonata.page.admin.block.entity'), 'controller' => 'sonata.page.controller.admin.block', 'manager_type' => 'orm', 'show_in_dashboard' => false, @@ -66,16 +64,16 @@ 'icon' => '', ]) ->args([ - new ReferenceConfigurator('sonata.block.manager'), - '%sonata_block.blocks%', + service('sonata.block.manager'), + param('sonata_block.blocks'), ]) - ->call('setContainerBlockTypes', ['%sonata.block.container.types%']) + ->call('setContainerBlockTypes', [param('sonata.block.container.types')]) ->call('setTranslationDomain', ['SonataPageBundle']) ->set('sonata.page.admin.shared_block', SharedBlockAdmin::class) ->public() ->tag('sonata.admin', [ - 'model_class' => '%sonata.page.admin.block.entity%', + 'model_class' => (string) param('sonata.page.admin.block.entity'), 'controller' => 'sonata.page.controller.admin.block', 'manager_type' => 'orm', 'group' => 'sonata_page', @@ -85,15 +83,15 @@ 'icon' => '', ]) ->args([ - new ReferenceConfigurator('sonata.block.manager'), + service('sonata.block.manager'), ]) - ->call('setContainerBlockTypes', ['%sonata.block.container.types%']) + ->call('setContainerBlockTypes', [param('sonata.block.container.types')]) ->call('setTranslationDomain', ['SonataPageBundle']) ->set('sonata.page.admin.snapshot', SnapshotAdmin::class) ->public() ->tag('sonata.admin', [ - 'model_class' => '%sonata.page.admin.snapshot.entity%', + 'model_class' => (string) param('sonata.page.admin.snapshot.entity'), 'controller' => 'sonata.page.controller.admin.snapshot', 'manager_type' => 'orm', 'group' => 'sonata_page', @@ -103,16 +101,16 @@ 'icon' => '', ]) ->args([ - new ReferenceConfigurator('sonata.page.transformer'), - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.manager.snapshot'), + service('sonata.page.transformer'), + service('sonata.page.manager.page'), + service('sonata.page.manager.snapshot'), ]) ->call('setTranslationDomain', ['SonataPageBundle']) ->set('sonata.page.admin.site', SiteAdmin::class) ->public() ->tag('sonata.admin', [ - 'model_class' => '%sonata.page.admin.site.entity%', + 'model_class' => (string) param('sonata.page.admin.site.entity'), 'controller' => 'sonata.page.controller.admin.site', 'manager_type' => 'orm', 'group' => 'sonata_page', @@ -122,7 +120,7 @@ 'icon' => '', ]) ->args([ - new ReferenceConfigurator('sonata.page.route.page.generator'), + service('sonata.page.route.page.generator'), ]) ->call('setTranslationDomain', ['SonataPageBundle']) @@ -130,7 +128,7 @@ ->tag('sonata.admin.extension', ['target' => 'sonata.page.admin.page']) ->tag('sonata.admin.extension', ['target' => 'sonata.page.admin.block']) ->args([ - new ReferenceConfigurator('sonata.page.service.create_snapshot'), + service('sonata.page.service.create_snapshot'), ]) ->alias(BlockAdmin::class, 'sonata.page.admin.block') diff --git a/src/Resources/config/block.php b/src/Resources/config/block.php index 96fafff1b..1d8db1974 100644 --- a/src/Resources/config/block.php +++ b/src/Resources/config/block.php @@ -11,56 +11,55 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\BlockBundle\Block\BlockServiceManagerInterface; use Sonata\PageBundle\Block\BreadcrumbBlockService; use Sonata\PageBundle\Block\ChildrenPagesBlockService; use Sonata\PageBundle\Block\ContainerBlockService; use Sonata\PageBundle\Block\PageListBlockService; use Sonata\PageBundle\Block\SharedBlockBlockService; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.page.block.container', ContainerBlockService::class) ->tag('sonata.block', ['context' => 'internal']) ->args([ - new ReferenceConfigurator('twig'), + service('twig'), ]) ->set('sonata.page.block.children_pages', ChildrenPagesBlockService::class) ->tag('sonata.block') ->args([ - new ReferenceConfigurator('twig'), - new ReferenceConfigurator('sonata.page.site.selector'), - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - new ReferenceConfigurator('sonata.page.admin.page'), + service('twig'), + service('sonata.page.site.selector'), + service('sonata.page.cms_manager_selector'), + service('sonata.page.admin.page'), ]) ->set('sonata.page.block.breadcrumb', BreadcrumbBlockService::class) ->tag('sonata.block') ->tag('sonata.breadcrumb') ->args([ - new ReferenceConfigurator('twig'), - new ReferenceConfigurator('knp_menu.factory'), - new ReferenceConfigurator('sonata.page.cms_manager_selector'), + service('twig'), + service('knp_menu.factory'), + service('sonata.page.cms_manager_selector'), ]) ->set('sonata.page.block.shared_block', SharedBlockBlockService::class) ->tag('sonata.block') ->args([ - new ReferenceConfigurator('twig'), - new ReferenceConfigurator('sonata.page.manager.block'), - new ReferenceConfigurator('sonata.page.admin.shared_block'), + service('twig'), + service('sonata.page.manager.block'), + service('sonata.page.admin.shared_block'), ]) ->set('sonata.page.block.pagelist', PageListBlockService::class) ->tag('sonata.block') ->args([ - new ReferenceConfigurator('twig'), - new ReferenceConfigurator('sonata.page.manager.page'), + service('twig'), + service('sonata.page.manager.page'), ]) ->alias(BlockServiceManagerInterface::class, 'sonata.block.manager'); diff --git a/src/Resources/config/command.php b/src/Resources/config/command.php index fd93d0224..4b8c4241b 100644 --- a/src/Resources/config/command.php +++ b/src/Resources/config/command.php @@ -11,58 +11,57 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Command\CleanupSnapshotsCommand; use Sonata\PageBundle\Command\CloneSiteCommand; use Sonata\PageBundle\Command\CreateBlockContainerCommand; use Sonata\PageBundle\Command\CreateSiteCommand; use Sonata\PageBundle\Command\CreateSnapshotsCommand; use Sonata\PageBundle\Command\UpdateCoreRoutesCommand; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.page.command.cleanup_snapshots', CleanupSnapshotsCommand::class) ->tag('console.command') ->args([ - new ReferenceConfigurator('sonata.page.service.cleanup_snapshot'), - new ReferenceConfigurator('sonata.page.manager.site'), + service('sonata.page.service.cleanup_snapshot'), + service('sonata.page.manager.site'), ]) ->set('sonata.page.command.clone_site', CloneSiteCommand::class) ->tag('console.command') ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.manager.block'), + service('sonata.page.manager.site'), + service('sonata.page.manager.page'), + service('sonata.page.manager.block'), ]) ->set('sonata.page.command.create_block_container', CreateBlockContainerCommand::class) ->tag('console.command') ->args([ - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.block_interactor'), + service('sonata.page.manager.page'), + service('sonata.page.block_interactor'), ]) ->set('sonata.page.command.create_site', CreateSiteCommand::class) ->tag('console.command') ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), + service('sonata.page.manager.site'), ]) ->set('sonata.page.command.create_snapshots', CreateSnapshotsCommand::class) ->tag('console.command') ->args([ - new ReferenceConfigurator('sonata.page.service.create_snapshot'), - new ReferenceConfigurator('sonata.page.manager.site'), + service('sonata.page.service.create_snapshot'), + service('sonata.page.manager.site'), ]) ->set('sonata.page.command.update_core_routes', UpdateCoreRoutesCommand::class) ->tag('console.command') ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.route.page.generator'), + service('sonata.page.manager.site'), + service('sonata.page.route.page.generator'), ]); }; diff --git a/src/Resources/config/controllers.php b/src/Resources/config/controllers.php index 728f3c46d..aa62f7ebe 100644 --- a/src/Resources/config/controllers.php +++ b/src/Resources/config/controllers.php @@ -11,56 +11,55 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Psr\Container\ContainerInterface; use Sonata\PageBundle\Controller\BlockAdminController; use Sonata\PageBundle\Controller\PageAdminController; use Sonata\PageBundle\Controller\PageController; use Sonata\PageBundle\Controller\SiteAdminController; use Sonata\PageBundle\Controller\SnapshotAdminController; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.page.controller.page', PageController::class) ->public() ->tag('container.service_subscriber') ->args([ - new ReferenceConfigurator('sonata.page.kernel.exception_listener'), - new ReferenceConfigurator('sonata.page.page_service_manager'), - new ReferenceConfigurator('sonata.page.cms_manager_selector'), + service('sonata.page.kernel.exception_listener'), + service('sonata.page.page_service_manager'), + service('sonata.page.cms_manager_selector'), ]) ->call('setContainer', [ - new ReferenceConfigurator(ContainerInterface::class), + service(ContainerInterface::class), ]) ->set('sonata.page.controller.admin.block', BlockAdminController::class) ->public() ->tag('container.service_subscriber') ->call('setContainer', [ - new ReferenceConfigurator(ContainerInterface::class), + service(ContainerInterface::class), ]) ->set('sonata.page.controller.admin.page', PageAdminController::class) ->public() ->tag('container.service_subscriber') ->call('setContainer', [ - new ReferenceConfigurator(ContainerInterface::class), + service(ContainerInterface::class), ]) ->set('sonata.page.controller.admin.site', SiteAdminController::class) ->public() ->tag('container.service_subscriber') ->call('setContainer', [ - new ReferenceConfigurator(ContainerInterface::class), + service(ContainerInterface::class), ]) ->set('sonata.page.controller.admin.snapshot', SnapshotAdminController::class) ->public() ->tag('container.service_subscriber') ->call('setContainer', [ - new ReferenceConfigurator(ContainerInterface::class), + service(ContainerInterface::class), ]); }; diff --git a/src/Resources/config/form.php b/src/Resources/config/form.php index 21c5e8686..9004e18c8 100644 --- a/src/Resources/config/form.php +++ b/src/Resources/config/form.php @@ -11,31 +11,30 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Form\Type\PageSelectorType; use Sonata\PageBundle\Form\Type\PageTypeChoiceType; use Sonata\PageBundle\Form\Type\TemplateChoiceType; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.page.form.type.page_selector', PageSelectorType::class) ->tag('form.type', ['alias' => 'sonata_page_selector']) ->args([ - new ReferenceConfigurator('sonata.page.manager.page'), + service('sonata.page.manager.page'), ]) ->set('sonata.page.form.template_choice', TemplateChoiceType::class) ->tag('form.type', ['alias' => 'sonata_page_template']) ->args([ - new ReferenceConfigurator('sonata.page.template_manager'), + service('sonata.page.template_manager'), ]) ->set('sonata.page.form.page_type_choice', PageTypeChoiceType::class) ->tag('form.type', ['alias' => 'sonata_page_type_choice']) ->args([ - new ReferenceConfigurator('sonata.page.page_service_manager'), + service('sonata.page.page_service_manager'), ]); }; diff --git a/src/Resources/config/http_kernel.php b/src/Resources/config/http_kernel.php index 7ac7019ba..01ac08835 100644 --- a/src/Resources/config/http_kernel.php +++ b/src/Resources/config/http_kernel.php @@ -11,13 +11,11 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Listener\ExceptionListener; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 - // Use "param" function for creating references to parameters when dropping support for Symfony 5.1 $containerConfigurator->services() ->set('sonata.page.kernel.exception_listener', ExceptionListener::class) @@ -29,13 +27,13 @@ ]) ->tag('monolog.logger', ['channel' => 'request']) ->args([ - new ReferenceConfigurator('sonata.page.site.selector'), - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - '%kernel.debug%', - new ReferenceConfigurator('twig'), - new ReferenceConfigurator('sonata.page.page_service_manager'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - [], - (new ReferenceConfigurator('logger'))->nullOnInvalid(), + service('sonata.page.site.selector'), + service('sonata.page.cms_manager_selector'), + param('kernel.debug'), + service('twig'), + service('sonata.page.page_service_manager'), + service('sonata.page.decorator_strategy'), + abstract_arg('http error codes'), + service('logger')->nullOnInvalid(), ]); }; diff --git a/src/Resources/config/orm.php b/src/Resources/config/orm.php index d1f958659..adb60b8bd 100644 --- a/src/Resources/config/orm.php +++ b/src/Resources/config/orm.php @@ -11,6 +11,8 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Entity\BlockInteractor; use Sonata\PageBundle\Entity\BlockManager; use Sonata\PageBundle\Entity\PageManager; @@ -23,12 +25,8 @@ use Sonata\PageBundle\Model\SnapshotManagerInterface; use Sonata\PageBundle\Model\SnapshotPageProxy; use Sonata\PageBundle\Model\SnapshotPageProxyFactory; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 - // Use "param" function for creating references to parameters when dropping support for Symfony 5.1 $containerConfigurator->services() ->set('sonata.page.proxy.snapshot.factory', SnapshotPageProxyFactory::class) @@ -40,49 +38,49 @@ ->set('sonata.page.manager.page', PageManager::class) ->public() ->args([ - '%sonata.page.page.class%', - new ReferenceConfigurator('doctrine'), - new ReferenceConfigurator('sonata.page.slugify.cocur'), - [], - [], + param('sonata.page.page.class'), + service('doctrine'), + service('sonata.page.slugify.cocur'), + abstract_arg('defaults'), + abstract_arg('page defaults'), ]) ->set('sonata.page.manager.snapshot', SnapshotManager::class) ->public() ->args([ - '%sonata.page.snapshot.class%', - new ReferenceConfigurator('doctrine'), - new ReferenceConfigurator('sonata.page.proxy.snapshot.factory'), + param('sonata.page.snapshot.class'), + service('doctrine'), + service('sonata.page.proxy.snapshot.factory'), ]) ->set('sonata.page.manager.block', BlockManager::class) ->public() ->args([ - '%sonata.page.block.class%', - new ReferenceConfigurator('doctrine'), + param('sonata.page.block.class'), + service('doctrine'), ]) ->set('sonata.page.manager.site', SiteManager::class) ->public() ->args([ - '%sonata.page.site.class%', - new ReferenceConfigurator('doctrine'), + param('sonata.page.site.class'), + service('doctrine'), ]) ->set('sonata.page.block_interactor', BlockInteractor::class) ->public() ->args([ - new ReferenceConfigurator('doctrine'), - new ReferenceConfigurator('sonata.page.manager.block'), + service('doctrine'), + service('sonata.page.manager.block'), ]) ->set('sonata.page.transformer', Transformer::class) ->public() ->args([ - new ReferenceConfigurator('sonata.page.manager.snapshot'), - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.manager.block'), - new ReferenceConfigurator('doctrine'), + service('sonata.page.manager.snapshot'), + service('sonata.page.manager.page'), + service('sonata.page.manager.block'), + service('doctrine'), ]) ->alias(PageManagerInterface::class, 'sonata.page.manager.page') diff --git a/src/Resources/config/page.php b/src/Resources/config/page.php index ceed8154b..a5d16c1c9 100644 --- a/src/Resources/config/page.php +++ b/src/Resources/config/page.php @@ -11,6 +11,8 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\CmsManager\CmsManagerSelector; use Sonata\PageBundle\CmsManager\CmsPageManager; use Sonata\PageBundle\CmsManager\CmsSnapshotManager; @@ -28,14 +30,10 @@ use Sonata\PageBundle\Site\HostPathSiteSelector; use Sonata\PageBundle\Site\HostSiteSelector; use Sonata\PageBundle\Site\SiteSelectorInterface; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; use Symfony\Component\Routing\RequestContext; use Symfony\Component\Security\Http\Event\LogoutEvent; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 - // Use "param" function for creating references to parameters when dropping support for Symfony 5.1 $containerConfigurator->services() ->set('sonata.page.site.selector.host', HostSiteSelector::class) @@ -50,9 +48,9 @@ 'priority' => 0, ]) ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - new ReferenceConfigurator('sonata.seo.page'), + service('sonata.page.manager.site'), + service('sonata.page.decorator_strategy'), + service('sonata.seo.page'), ]) ->set('sonata.page.site.selector.host_by_locale', HostByLocaleSiteSelector::class) @@ -67,9 +65,9 @@ 'priority' => 0, ]) ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - new ReferenceConfigurator('sonata.seo.page'), + service('sonata.page.manager.site'), + service('sonata.page.decorator_strategy'), + service('sonata.seo.page'), ]) ->set('sonata.page.site.selector.host_with_path', HostPathSiteSelector::class) @@ -84,9 +82,9 @@ 'priority' => 0, ]) ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - new ReferenceConfigurator('sonata.seo.page'), + service('sonata.page.manager.site'), + service('sonata.page.decorator_strategy'), + service('sonata.seo.page'), ]) ->set('sonata.page.site.selector.host_with_path_by_locale', HostPathByLocaleSiteSelector::class) @@ -101,9 +99,9 @@ 'priority' => 0, ]) ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - new ReferenceConfigurator('sonata.seo.page'), + service('sonata.page.manager.site'), + service('sonata.page.decorator_strategy'), + service('sonata.seo.page'), ]) ->set('sonata.page.response_listener', ResponseListener::class) @@ -113,11 +111,11 @@ 'priority' => -1, ]) ->args([ - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - new ReferenceConfigurator('sonata.page.page_service_manager'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - new ReferenceConfigurator('twig'), - '%sonata.page.skip_redirection%', + service('sonata.page.cms_manager_selector'), + service('sonata.page.page_service_manager'), + service('sonata.page.decorator_strategy'), + service('twig'), + param('sonata.page.skip_redirection'), ]) ->set('sonata.page.request_listener', RequestListener::class) @@ -127,9 +125,9 @@ 'priority' => 4, ]) ->args([ - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - new ReferenceConfigurator('sonata.page.site.selector'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), + service('sonata.page.cms_manager_selector'), + service('sonata.page.site.selector'), + service('sonata.page.decorator_strategy'), ]) ->set('sonata.page.cms_manager_selector', CmsManagerSelector::class) @@ -143,61 +141,65 @@ 'method' => 'onLogout', ]) ->args([ - new ReferenceConfigurator('sonata.page.cms.page'), - new ReferenceConfigurator('sonata.page.cms.snapshot'), - new ReferenceConfigurator('sonata.page.admin.page'), - new ReferenceConfigurator('security.token_storage'), - new ReferenceConfigurator('request_stack'), + service('sonata.page.cms.page'), + service('sonata.page.cms.snapshot'), + service('sonata.page.admin.page'), + service('security.token_storage'), + service('request_stack'), ]) ->set('sonata.page.cms.page', CmsPageManager::class) ->public() ->tag('sonata.page.manager', ['type' => 'page']) ->args([ - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.block_interactor'), + service('sonata.page.manager.page'), + service('sonata.page.block_interactor'), ]) ->set('sonata.page.cms.snapshot', CmsSnapshotManager::class) ->public() ->tag('sonata.page.manager', ['type' => 'snapshot']) ->args([ - new ReferenceConfigurator('sonata.page.manager.snapshot'), - new ReferenceConfigurator('sonata.page.transformer'), + service('sonata.page.manager.snapshot'), + service('sonata.page.transformer'), ]) ->set('sonata.page.decorator_strategy', DecoratorStrategy::class) - ->args([[], [], []]) + ->args([ + abstract_arg('ignore routes'), + abstract_arg('ignore route patterns'), + abstract_arg('ignore uri patterns'), + ]) ->set('sonata.page.router.request_context', RequestContext::class) ->factory([ - new ReferenceConfigurator('sonata.page.site.selector'), + service('sonata.page.site.selector'), 'getRequestContext', ]) ->set('sonata.page.router', CmsPageRouter::class) ->public() ->args([ - new ReferenceConfigurator('router.request_context'), - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - new ReferenceConfigurator('sonata.page.site.selector'), - new ReferenceConfigurator('router.default'), + service('router.request_context'), + service('sonata.page.cms_manager_selector'), + service('sonata.page.site.selector'), + service('router.default'), ]) ->set('sonata.page.route.page.generator', RoutePageGenerator::class) ->public() ->args([ - new ReferenceConfigurator('router.default'), - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.decorator_strategy'), - new ReferenceConfigurator('sonata.page.kernel.exception_listener'), + service('router.default'), + service('sonata.page.manager.page'), + service('sonata.page.decorator_strategy'), + service('sonata.page.kernel.exception_listener'), ]) ->set('sonata.page.template_manager', TemplateManager::class) ->public() ->args([ - new ReferenceConfigurator('twig'), - [], + service('twig'), + abstract_arg('default parameters'), ]) ->set('sonata.page.page_service_manager', PageServiceManager::class) @@ -208,8 +210,8 @@ ->tag('sonata.page') ->args([ 'Default', - new ReferenceConfigurator('sonata.page.template_manager'), - new ReferenceConfigurator('sonata.seo.page'), + service('sonata.page.template_manager'), + service('sonata.seo.page'), ]) ->alias(TemplateManagerInterface::class, 'sonata.page.template_manager') diff --git a/src/Resources/config/service.php b/src/Resources/config/service.php index ba4f51940..5ec6da8f6 100644 --- a/src/Resources/config/service.php +++ b/src/Resources/config/service.php @@ -11,28 +11,27 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Service\CleanupSnapshotService; use Sonata\PageBundle\Service\CreateSnapshotService; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.page.service.create_snapshot', CreateSnapshotService::class) ->public() ->args([ - new ReferenceConfigurator('sonata.page.manager.snapshot'), - new ReferenceConfigurator('sonata.page.manager.page'), - new ReferenceConfigurator('sonata.page.transformer'), + service('sonata.page.manager.snapshot'), + service('sonata.page.manager.page'), + service('sonata.page.transformer'), ]) ->set('sonata.page.service.cleanup_snapshot', CleanupSnapshotService::class) ->public() ->args([ - new ReferenceConfigurator('sonata.page.manager.snapshot'), - new ReferenceConfigurator('sonata.page.manager.page'), + service('sonata.page.manager.snapshot'), + service('sonata.page.manager.page'), ]) ->alias(CreateSnapshotService::class, 'sonata.page.service.create_snapshot'); diff --git a/src/Resources/config/slugify.php b/src/Resources/config/slugify.php index 10dbd67f9..f60e47797 100644 --- a/src/Resources/config/slugify.php +++ b/src/Resources/config/slugify.php @@ -11,8 +11,9 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Cocur\Slugify\Slugify; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { $containerConfigurator->services() diff --git a/src/Resources/config/twig.php b/src/Resources/config/twig.php index 5ed94f3d6..4a6bcf0ab 100644 --- a/src/Resources/config/twig.php +++ b/src/Resources/config/twig.php @@ -11,32 +11,30 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Twig\Extension\PageExtension; use Sonata\PageBundle\Twig\GlobalVariables; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 - // Use "param" function for creating references to parameters when dropping support for Symfony 5.1 $containerConfigurator->services() ->set('sonata.page.twig.extension', PageExtension::class) ->tag('twig.extension') ->args([ - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - new ReferenceConfigurator('sonata.page.site.selector'), - new ReferenceConfigurator('router'), - new ReferenceConfigurator('sonata.block.templating.helper'), - new ReferenceConfigurator('request_stack'), - '%sonata.page.hide_disabled_blocks%', + service('sonata.page.cms_manager_selector'), + service('sonata.page.site.selector'), + service('router'), + service('sonata.block.templating.helper'), + service('request_stack'), + param('sonata.page.hide_disabled_blocks'), ]) ->set('sonata.page.twig.global', GlobalVariables::class) ->args([ - new ReferenceConfigurator('sonata.page.manager.site'), - new ReferenceConfigurator('sonata.page.cms_manager_selector'), - new ReferenceConfigurator('sonata.page.site.selector'), - new ReferenceConfigurator('sonata.page.template_manager'), + service('sonata.page.manager.site'), + service('sonata.page.cms_manager_selector'), + service('sonata.page.site.selector'), + service('sonata.page.template_manager'), ]); }; diff --git a/src/Resources/config/validators.php b/src/Resources/config/validators.php index c954a616c..60896f5ca 100644 --- a/src/Resources/config/validators.php +++ b/src/Resources/config/validators.php @@ -11,17 +11,16 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\PageBundle\Validator\UniqueUrlValidator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.page.validator.unique_url', UniqueUrlValidator::class) ->tag('validator.constraint_validator', ['alias' => 'sonata.page.validator.unique_url']) ->args([ - new ReferenceConfigurator('sonata.page.manager.page'), + service('sonata.page.manager.page'), ]); }; diff --git a/src/Site/BaseSiteSelector.php b/src/Site/BaseSiteSelector.php index 1b9d15886..a503a6104 100644 --- a/src/Site/BaseSiteSelector.php +++ b/src/Site/BaseSiteSelector.php @@ -49,9 +49,6 @@ public function onKernelRequestRedirect(RequestEvent $event): void { } - /** - * @psalm-suppress UndefinedMethod - */ final public function onKernelRequest(RequestEvent $event): void { if (!$this->decoratorStrategy->isRouteUriDecorable($event->getRequest()->getPathInfo())) { @@ -60,11 +57,7 @@ final public function onKernelRequest(RequestEvent $event): void $this->handleKernelRequest($event); - // TODO: Simplify when dropping support for Symfony < 5.3. - // @phpstan-ignore-next-line - $isMainRequest = method_exists($event, 'isMainRequest') ? $event->isMainRequest() : $event->isMasterRequest(); - - if ($isMainRequest && null !== $this->site) { + if ($event->isMainRequest() && null !== $this->site) { $title = $this->site->getTitle(); if (null !== $title) { $this->seoPage->setTitle($title); diff --git a/tests/App/AppKernel.php b/tests/App/AppKernel.php index f2bbad914..d34628550 100644 --- a/tests/App/AppKernel.php +++ b/tests/App/AppKernel.php @@ -35,7 +35,6 @@ use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; use Symfony\Component\Security\Http\Attribute\IsGranted; -use Symfony\Component\Security\Http\Authentication\AuthenticatorManager; final class AppKernel extends Kernel { @@ -79,12 +78,7 @@ public function getProjectDir(): string return __DIR__; } - /** - * TODO: add typehint when support for Symfony < 5.1 is dropped. - * - * @param RoutingConfigurator $routes - */ - protected function configureRoutes($routes): void + protected function configureRoutes(RoutingConfigurator $routes): void { $routes->import($this->getProjectDir().'/config/routes.yaml'); } @@ -98,12 +92,8 @@ protected function configureContainer(ContainerBuilder $container, LoaderInterfa $loader->load($this->getProjectDir().'/config/config.yaml'); - if (class_exists(IsGranted::class)) { - $loader->load($this->getProjectDir().'/config/config_symfony_v6.yaml'); - } elseif (class_exists(AuthenticatorManager::class)) { + if (!class_exists(IsGranted::class)) { $loader->load($this->getProjectDir().'/config/config_symfony_v5.yaml'); - } else { - $loader->load($this->getProjectDir().'/config/config_symfony_v4.yaml'); } if (class_exists(HttpCacheHandler::class)) { diff --git a/tests/App/config/config.yaml b/tests/App/config/config.yaml index d0f1a09cf..ec22137fe 100644 --- a/tests/App/config/config.yaml +++ b/tests/App/config/config.yaml @@ -12,6 +12,8 @@ framework: csrf_protection: enabled: false http_method_override: false + session: + storage_factory_id: session.storage.factory.mock_file security: role_hierarchy: null diff --git a/tests/App/config/config_symfony_v4.yaml b/tests/App/config/config_symfony_v4.yaml deleted file mode 100644 index 0445e1836..000000000 --- a/tests/App/config/config_symfony_v4.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - session: - storage_id: session.storage.mock_file diff --git a/tests/App/config/config_symfony_v5.yaml b/tests/App/config/config_symfony_v5.yaml index 2c5c6e460..f1e0ffdd4 100644 --- a/tests/App/config/config_symfony_v5.yaml +++ b/tests/App/config/config_symfony_v5.yaml @@ -1,6 +1,2 @@ security: enable_authenticator_manager: true - -framework: - session: - storage_factory_id: session.storage.factory.mock_file diff --git a/tests/App/config/config_symfony_v6.yaml b/tests/App/config/config_symfony_v6.yaml deleted file mode 100644 index bef276931..000000000 --- a/tests/App/config/config_symfony_v6.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - session: - storage_factory_id: session.storage.factory.mock_file diff --git a/tests/App/config/services.php b/tests/App/config/services.php index c67bcd42a..1c5905b6a 100644 --- a/tests/App/config/services.php +++ b/tests/App/config/services.php @@ -11,20 +11,19 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Psr\Container\ContainerInterface; use Psr\Log\NullLogger; use Sonata\PageBundle\Tests\App\Controller\DynamicController; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set(DynamicController::class) ->public() ->tag('container.service_subscriber') - ->call('setContainer', [new ReferenceConfigurator(ContainerInterface::class)]) + ->call('setContainer', [service(ContainerInterface::class)]) ->set('logger', NullLogger::class); }; diff --git a/tests/CmsManager/DecoratorStrategyTest.php b/tests/CmsManager/DecoratorStrategyTest.php index f13f8ca45..6a939b68f 100644 --- a/tests/CmsManager/DecoratorStrategyTest.php +++ b/tests/CmsManager/DecoratorStrategyTest.php @@ -34,30 +34,27 @@ public function testIsDecorable(): void $response->headers = new ResponseHeaderBag(); $response->headers->set('Content-Type', 'foo/test'); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - static::assertFalse($strategy->isDecorable($request, $mainRequestType, $response)); + static::assertFalse($strategy->isDecorable($request, HttpKernelInterface::MAIN_REQUEST, $response)); $response->headers->set('Content-Type', 'text/html'); $response->setStatusCode(404); - static::assertFalse($strategy->isDecorable($request, $mainRequestType, $response)); + static::assertFalse($strategy->isDecorable($request, HttpKernelInterface::MAIN_REQUEST, $response)); $response->setStatusCode(200); $request->headers->set('x-requested-with', 'XMLHttpRequest'); - static::assertFalse($strategy->isDecorable($request, $mainRequestType, $response)); + static::assertFalse($strategy->isDecorable($request, HttpKernelInterface::MAIN_REQUEST, $response)); $request->headers->set('x-requested-with', null); $response->headers->set('x-sonata-page-not-decorable', '1'); - static::assertFalse($strategy->isDecorable($request, $mainRequestType, $response)); + static::assertFalse($strategy->isDecorable($request, HttpKernelInterface::MAIN_REQUEST, $response)); $response->headers->remove('x-sonata-page-not-decorable'); $request->headers->set('x-requested-with', 'XMLHttpRequest'); $response->headers->set('x-sonata-page-decorable', '1'); - static::assertTrue($strategy->isDecorable($request, $mainRequestType, $response)); + static::assertTrue($strategy->isDecorable($request, HttpKernelInterface::MAIN_REQUEST, $response)); } public function testIgnoreRouteNameMatch(): void diff --git a/tests/Functional/Admin/BlockAdminTest.php b/tests/Functional/Admin/BlockAdminTest.php index e52732d17..b1466c85c 100644 --- a/tests/Functional/Admin/BlockAdminTest.php +++ b/tests/Functional/Admin/BlockAdminTest.php @@ -223,15 +223,9 @@ public static function provideBatchActionsCases(): iterable yield 'Delete Blocks' => ['delete']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); diff --git a/tests/Functional/Admin/BrowserTest.php b/tests/Functional/Admin/BrowserTest.php index 6c9598bfc..4de5c35e2 100644 --- a/tests/Functional/Admin/BrowserTest.php +++ b/tests/Functional/Admin/BrowserTest.php @@ -86,15 +86,9 @@ public function testComposePageBlockErrors(): void static::assertCount(2, $crawler->filter('.page-composer__container__child')); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ protected static function prepareDatabase(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); diff --git a/tests/Functional/Admin/PageAdminTest.php b/tests/Functional/Admin/PageAdminTest.php index 78fa92441..7ac0a0df2 100644 --- a/tests/Functional/Admin/PageAdminTest.php +++ b/tests/Functional/Admin/PageAdminTest.php @@ -79,17 +79,11 @@ public static function provideCrudUrlsCases(): iterable yield 'Compose preview Block' => ['/admin/tests/app/sonatapagepage/1/sonatapageblock/2/compose-preview']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ public function testRedirectWithSiteSelectedWhenThereIsOnlyOneSite(): void { $client = self::createClient(); - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -253,15 +247,9 @@ public static function provideTabMenuCases(): iterable yield 'View page link' => ['View page', '/']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); diff --git a/tests/Functional/Admin/SharedBlockAdminTest.php b/tests/Functional/Admin/SharedBlockAdminTest.php index 2e34b0694..e559ca7c3 100644 --- a/tests/Functional/Admin/SharedBlockAdminTest.php +++ b/tests/Functional/Admin/SharedBlockAdminTest.php @@ -208,15 +208,9 @@ public static function provideBatchActionsCases(): iterable yield 'Delete Shared Blocks' => ['delete']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $block = new SonataPageBlock(); diff --git a/tests/Functional/Admin/SiteAdminTest.php b/tests/Functional/Admin/SiteAdminTest.php index 19a8634d8..60b6e7691 100644 --- a/tests/Functional/Admin/SiteAdminTest.php +++ b/tests/Functional/Admin/SiteAdminTest.php @@ -118,15 +118,9 @@ public static function provideBatchActionsCases(): iterable yield 'Delete Sites' => ['delete']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); diff --git a/tests/Functional/Admin/SnapshotAdminTest.php b/tests/Functional/Admin/SnapshotAdminTest.php index bf880b776..48456d9b0 100644 --- a/tests/Functional/Admin/SnapshotAdminTest.php +++ b/tests/Functional/Admin/SnapshotAdminTest.php @@ -98,17 +98,11 @@ public static function provideFormUrlsCases(): iterable yield 'Remove Snapshot' => ['/admin/tests/app/sonatapagesnapshot/1/delete', [], 'btn_delete']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ public function testCreatedSnapshotsAreEnabled(): void { $client = self::createClient(); - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('sonata.page.manager.snapshot'); + $manager = static::getContainer()->get('sonata.page.manager.snapshot'); \assert($manager instanceof SnapshotManagerInterface); $this->prepareData(); @@ -156,15 +150,9 @@ public static function provideBatchActionsCases(): iterable yield 'Toggle Snapshots' => ['toggle_enabled']; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); diff --git a/tests/Functional/BasePantherTestCase.php b/tests/Functional/BasePantherTestCase.php index 302784a98..8e51ff9ed 100644 --- a/tests/Functional/BasePantherTestCase.php +++ b/tests/Functional/BasePantherTestCase.php @@ -24,21 +24,11 @@ public static function setUpBeforeClass(): void { StaticDriver::setKeepStaticConnections(false); - // TODO: Remove call to `bootKernel` when dropping support for Symfony 4. - if (!self::$booted) { - self::bootKernel(); - } - static::prepareDatabase(); } public static function tearDownAfterClass(): void { - // TODO: Remove call to `bootKernel` when dropping support for Symfony 4. - if (!self::$booted) { - self::bootKernel(); - } - self::rollbackDatabase(); StaticDriver::setKeepStaticConnections(true); @@ -54,15 +44,9 @@ public function testCrudUrls(): void abstract protected static function prepareDatabase(): void; - /** - * @psalm-suppress UndefinedPropertyFetch - */ private static function rollbackDatabase(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $meta = $manager->getMetadataFactory()->getAllMetadata(); diff --git a/tests/Functional/Command/CleanupSnapshotsCommandTest.php b/tests/Functional/Command/CleanupSnapshotsCommandTest.php index 2f7d5df5b..74577ae37 100644 --- a/tests/Functional/Command/CleanupSnapshotsCommandTest.php +++ b/tests/Functional/Command/CleanupSnapshotsCommandTest.php @@ -81,15 +81,9 @@ public static function provideKeepSnapshotsCases(): iterable ], 1]; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -130,15 +124,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function countSnapshots(): int { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); return $manager->getRepository(SonataPageSnapshot::class)->count([]); diff --git a/tests/Functional/Command/CloneSiteCommandTest.php b/tests/Functional/Command/CloneSiteCommandTest.php index 951885dbc..085e14569 100644 --- a/tests/Functional/Command/CloneSiteCommandTest.php +++ b/tests/Functional/Command/CloneSiteCommandTest.php @@ -98,15 +98,9 @@ public function testCloneOnlyHybridPagesFromSite(): void static::assertStringContainsString('done!', $this->commandTester->getDisplay()); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -152,15 +146,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function countPages(): int { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); return $manager->getRepository(SonataPagePage::class)->count([]); diff --git a/tests/Functional/Command/CreateBlockContainerCommandTest.php b/tests/Functional/Command/CreateBlockContainerCommandTest.php index ef601dd79..25ce7b9c4 100644 --- a/tests/Functional/Command/CreateBlockContainerCommandTest.php +++ b/tests/Functional/Command/CreateBlockContainerCommandTest.php @@ -83,15 +83,9 @@ public function testCreateBlockContainerWithName(): void static::assertStringContainsString('done!', $this->commandTester->getDisplay()); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $page = new SonataPagePage(); @@ -108,15 +102,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function countBlocks(): int { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); return $manager->getRepository(SonataPageBlock::class)->count([]); diff --git a/tests/Functional/Command/CreateSiteCommandTest.php b/tests/Functional/Command/CreateSiteCommandTest.php index 3d22fb38c..57d2429cb 100644 --- a/tests/Functional/Command/CreateSiteCommandTest.php +++ b/tests/Functional/Command/CreateSiteCommandTest.php @@ -162,15 +162,9 @@ public static function provideSiteCreationOptions(): iterable ]; } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function countSites(): int { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); return $manager->getRepository(SonataPageSite::class)->count([]); diff --git a/tests/Functional/Command/CreateSnapshotsCommandTest.php b/tests/Functional/Command/CreateSnapshotsCommandTest.php index ab373ef27..ab41e7eba 100644 --- a/tests/Functional/Command/CreateSnapshotsCommandTest.php +++ b/tests/Functional/Command/CreateSnapshotsCommandTest.php @@ -60,15 +60,9 @@ public function testCreateSnapshotsForOneSite(): void static::assertStringContainsString('done!', $this->commandTester->getDisplay()); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -97,15 +91,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function countSnapshots(): int { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); return $manager->getRepository(SonataPageSnapshot::class)->count([]); diff --git a/tests/Functional/Command/UpdateCoreRoutesCommandTest.php b/tests/Functional/Command/UpdateCoreRoutesCommandTest.php index 93eedf0fa..7cf81e2de 100644 --- a/tests/Functional/Command/UpdateCoreRoutesCommandTest.php +++ b/tests/Functional/Command/UpdateCoreRoutesCommandTest.php @@ -75,15 +75,9 @@ public function testUpdateCoreRoutesWithCleanup(): void static::assertStringContainsString('done!', $this->commandTester->getDisplay()); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -114,15 +108,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function countPages(): int { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists(self::class, 'getContainer') ? static::getContainer() : static::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); return $manager->getRepository(SonataPagePage::class)->count([]); diff --git a/tests/Functional/Frontend/ExceptionsTest.php b/tests/Functional/Frontend/ExceptionsTest.php index b7dccd97f..8a34c031a 100644 --- a/tests/Functional/Frontend/ExceptionsTest.php +++ b/tests/Functional/Frontend/ExceptionsTest.php @@ -20,7 +20,6 @@ use Symfony\Component\BrowserKit\AbstractBrowser; use Symfony\Component\BrowserKit\Cookie; use Symfony\Component\HttpFoundation\Session\SessionFactoryInterface; -use Symfony\Component\HttpFoundation\Session\SessionInterface; final class ExceptionsTest extends WebTestCase { @@ -59,15 +58,9 @@ public function testExceptionsEdit(): void self::assertResponseIsSuccessful(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -97,25 +90,13 @@ private function prepareData(): void /** * Normally this would happen via an interactive login. * Part of this logic is also copied from AbstractBrowser::loginUser(). - * - * @psalm-suppress UndefinedPropertyFetch */ private function becomeEditor(AbstractBrowser $client): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - - // TODO: Simplify this when dropping support for Symfony 4. - if ($container->has('session.factory')) { - $sessionFactory = $container->get('session.factory'); - \assert($sessionFactory instanceof SessionFactoryInterface); - - $session = $sessionFactory->createSession(); - } else { - $session = $container->get('session'); - \assert($session instanceof SessionInterface); - } + $sessionFactory = self::getContainer()->get('session.factory'); + \assert($sessionFactory instanceof SessionFactoryInterface); + + $session = $sessionFactory->createSession(); $session->set('sonata/page/isEditor', true); $session->save(); diff --git a/tests/Functional/Frontend/PageTest.php b/tests/Functional/Frontend/PageTest.php index 5631dd494..c2b6d93e7 100644 --- a/tests/Functional/Frontend/PageTest.php +++ b/tests/Functional/Frontend/PageTest.php @@ -22,7 +22,6 @@ use Symfony\Component\BrowserKit\AbstractBrowser; use Symfony\Component\BrowserKit\Cookie; use Symfony\Component\HttpFoundation\Session\SessionFactoryInterface; -use Symfony\Component\HttpFoundation\Session\SessionInterface; final class PageTest extends WebTestCase { @@ -225,15 +224,9 @@ public function testGlobalPage(): void static::assertStringContainsString('Footer content', $content); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -284,15 +277,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function preparePageTypesData(PageInterface $page): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -321,15 +308,9 @@ private function preparePageTypesData(PageInterface $page): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareGlobalPageData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -384,25 +365,13 @@ private function prepareGlobalPageData(): void /** * Normally this would happen via an interactive login. * Part of this logic is also copied from AbstractBrowser::loginUser(). - * - * @psalm-suppress UndefinedPropertyFetch */ private function becomeEditor(AbstractBrowser $client): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - - // TODO: Simplify this when dropping support for Symfony 4. - if ($container->has('session.factory')) { - $sessionFactory = $container->get('session.factory'); - \assert($sessionFactory instanceof SessionFactoryInterface); - - $session = $sessionFactory->createSession(); - } else { - $session = $container->get('session'); - \assert($session instanceof SessionInterface); - } + $sessionFactory = self::getContainer()->get('session.factory'); + \assert($sessionFactory instanceof SessionFactoryInterface); + + $session = $sessionFactory->createSession(); $session->set('sonata/page/isEditor', true); $session->save(); diff --git a/tests/Functional/Frontend/SnapshotTest.php b/tests/Functional/Frontend/SnapshotTest.php index f85f552dd..744e7306e 100644 --- a/tests/Functional/Frontend/SnapshotTest.php +++ b/tests/Functional/Frontend/SnapshotTest.php @@ -205,15 +205,9 @@ public function testGlobalSnapshot(): void static::assertStringContainsString('Footer content', $content); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -234,15 +228,9 @@ private function prepareData(): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareSnapshotTypesData(PageInterface $page): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); @@ -271,15 +259,9 @@ private function prepareSnapshotTypesData(PageInterface $page): void $manager->flush(); } - /** - * @psalm-suppress UndefinedPropertyFetch - */ private function prepareGlobalSnapshotData(): void { - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $site = new SonataPageSite(); diff --git a/tests/Functional/Ticket/Issue1134Test.php b/tests/Functional/Ticket/Issue1134Test.php index 7f8c73b57..f4fe4fbe4 100644 --- a/tests/Functional/Ticket/Issue1134Test.php +++ b/tests/Functional/Ticket/Issue1134Test.php @@ -21,9 +21,6 @@ final class Issue1134Test extends WebTestCase { - /** - * @psalm-suppress UndefinedPropertyFetch - */ public function testLabelInShowAction(): void { $client = self::createClient(); @@ -33,11 +30,7 @@ public function testLabelInShowAction(): void $site->setHost('http://localhost'); $site->setIsDefault(true); - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : self::$container; - - $manager = $container->get('doctrine.orm.entity_manager'); + $manager = self::getContainer()->get('doctrine.orm.entity_manager'); \assert($manager instanceof EntityManagerInterface); $manager->persist($site); diff --git a/tests/Listener/ExceptionListenerTest.php b/tests/Listener/ExceptionListenerTest.php index 0a6388784..cec8ea78d 100644 --- a/tests/Listener/ExceptionListenerTest.php +++ b/tests/Listener/ExceptionListenerTest.php @@ -186,9 +186,6 @@ private function getMockEvent(\Exception $exception): ExceptionEvent $kernel = $this->createMock(HttpKernelInterface::class); $request = new Request(); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - return new ExceptionEvent($kernel, $request, $mainRequestType, $exception); + return new ExceptionEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $exception); } } diff --git a/tests/Listener/RequestListenerTest.php b/tests/Listener/RequestListenerTest.php index 7d9d2f6f1..1be4547fe 100644 --- a/tests/Listener/RequestListenerTest.php +++ b/tests/Listener/RequestListenerTest.php @@ -52,10 +52,7 @@ public function testValidSite(): void '_route' => 'some-random-route', ]); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $listener = new RequestListener($cmsSelector, $siteSelector, $decoratorStrategy); $listener->onCoreRequest($event); @@ -79,10 +76,7 @@ public function testNoSite(): void $kernel = $this->createMock(HttpKernelInterface::class); $request = new Request(); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $listener = new RequestListener($cmsSelector, $siteSelector, $decoratorStrategy); $listener->onCoreRequest($event); diff --git a/tests/Listener/ResponseListenerTest.php b/tests/Listener/ResponseListenerTest.php index 536c629f0..39eb4814b 100644 --- a/tests/Listener/ResponseListenerTest.php +++ b/tests/Listener/ResponseListenerTest.php @@ -170,9 +170,6 @@ private function getMockEvent(string $content): ResponseEvent $request = new Request(); $response = new Response($content); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - return new ResponseEvent($kernel, $request, $mainRequestType, $response); + return new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response); } } diff --git a/tests/Page/TemplateManagerTest.php b/tests/Page/TemplateManagerTest.php index 79c599c99..695e07e0a 100644 --- a/tests/Page/TemplateManagerTest.php +++ b/tests/Page/TemplateManagerTest.php @@ -146,13 +146,10 @@ public function testRenderResponseWithDefaultParameters(): void public function testTemplateShowingBreadcrumbIntoThePage(): void { $kernel = self::bootKernel(); - // TODO: Simplify this when dropping support for Symfony 4. - // @phpstan-ignore-next-line - $container = method_exists($this, 'getContainer') ? self::getContainer() : $kernel->getContainer(); $requestStack = new RequestStack(); $requestStack->push(new Request()); - $container->set('request_stack', $requestStack); + self::getContainer()->set('request_stack', $requestStack); // Mocking snapshot $page = $this->createMock(PageInterface::class); @@ -165,9 +162,9 @@ public function testTemplateShowingBreadcrumbIntoThePage(): void $transformer = $this->createMock(TransformerInterface::class); $cmsSnapshotManager = new CmsSnapshotManager($snapshotManager, $transformer); $cmsSnapshotManager->setCurrentPage($page); - $container->set('sonata.page.cms.snapshot', $cmsSnapshotManager); + self::getContainer()->set('sonata.page.cms.snapshot', $cmsSnapshotManager); - $twig = $container->get('twig'); + $twig = self::getContainer()->get('twig'); \assert($twig instanceof Environment); $manager = new TemplateManager($twig, []); diff --git a/tests/Site/HostByLocaleSiteSelectorTest.php b/tests/Site/HostByLocaleSiteSelectorTest.php index db1f8f131..7f3401df3 100644 --- a/tests/Site/HostByLocaleSiteSelectorTest.php +++ b/tests/Site/HostByLocaleSiteSelectorTest.php @@ -54,10 +54,7 @@ public function testHandleKernelRequestSelectsEn(): void static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $this->siteManager ->expects(static::once()) @@ -83,10 +80,7 @@ public function testHandleKernelRequestSelectsFr(): void static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $this->siteManager ->expects(static::once()) diff --git a/tests/Site/HostPathByLocaleSiteSelectorTest.php b/tests/Site/HostPathByLocaleSiteSelectorTest.php index 0f826011c..aee0bd705 100644 --- a/tests/Site/HostPathByLocaleSiteSelectorTest.php +++ b/tests/Site/HostPathByLocaleSiteSelectorTest.php @@ -56,10 +56,7 @@ public function testHandleKernelRequestRedirectsToEn(): void // Ensure request locale is null static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $this->siteManager ->expects(static::once()) @@ -96,10 +93,7 @@ public function testHandleKernelRequestRedirectsToFr(): void // Ensure request locale is null static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $this->siteManager ->expects(static::once()) diff --git a/tests/Site/HostPathSiteSelectorTest.php b/tests/Site/HostPathSiteSelectorTest.php index 4ebcb8beb..cc19340e7 100644 --- a/tests/Site/HostPathSiteSelectorTest.php +++ b/tests/Site/HostPathSiteSelectorTest.php @@ -93,10 +93,7 @@ private function performHandleKernelRequestTest(string $url): array static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $siteManager = $this->createMock(SiteManagerInterface::class); $decoratorStrategy = $this->createMock(DecoratorStrategyInterface::class); diff --git a/tests/Site/HostSiteSelectorTest.php b/tests/Site/HostSiteSelectorTest.php index 5422ab206..ba8a1644f 100644 --- a/tests/Site/HostSiteSelectorTest.php +++ b/tests/Site/HostSiteSelectorTest.php @@ -62,10 +62,7 @@ protected function performHandleKernelRequestTest(string $url): array static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $siteManager = $this->createMock(SiteManagerInterface::class); $decoratorStrategy = $this->createMock(DecoratorStrategyInterface::class); diff --git a/tests/Site/SubRequestsSiteSelectorTest.php b/tests/Site/SubRequestsSiteSelectorTest.php index 358fd32d6..876b69682 100644 --- a/tests/Site/SubRequestsSiteSelectorTest.php +++ b/tests/Site/SubRequestsSiteSelectorTest.php @@ -55,10 +55,7 @@ public function testOnKernelRequestWithMainDetectEn(): void // Ensure request locale is null static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $this->siteManager ->expects(static::once()) @@ -84,10 +81,7 @@ public function testOnKernelRequestWithMainDetectFr(): void // Ensure request locale is null static::assertNull($request->attributes->get('_locale')); - // TODO: Simplify this when dropping support for Symfony < 5.3 - $mainRequestType = \defined(HttpKernelInterface::class.'::MAIN_REQUEST') ? HttpKernelInterface::MAIN_REQUEST : 1; - - $event = new RequestEvent($kernel, $request, $mainRequestType); + $event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); $this->siteManager ->expects(static::once())