diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b7f7768..c895728 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,7 +19,6 @@ jobs: matrix: include: - { php-version: 8.1, symfony-locked-version: none, dependency-version: prefer-lowest } - - { php-version: 8.2, symfony-locked-version: 5.4.*, dependency-version: prefer-stable } - { php-version: 8.2, symfony-locked-version: 6.4.*, dependency-version: prefer-stable } - { php-version: 8.3, symfony-locked-version: none, dependency-version: prefer-stable } name: PHPUnit (PHP ${{matrix.php-version}}, Symfony Version Lock ${{ matrix.symfony-locked-version }}, ${{ matrix.dependency-version }}) diff --git a/composer.json b/composer.json index 48c0936..a2f9fc9 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "symfony/filesystem": "^5.4|^6.4|^7.0", "symfony/finder": "^5.4|^6.4|^7.0", "symfony/http-foundation": "^5.4|^6.4|^7.0", - "symfony/http-kernel": "^5.4|^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", "symfony/lock": "^5.4|^6.4|^7.0", "symfony/twig-bundle": "^5.4|^6.4|^7.0", "twig/twig": "^2.0|^3.0" diff --git a/src/Caching/EventListener.php b/src/Caching/EventListener.php index ee8dc11..fc3db5e 100644 --- a/src/Caching/EventListener.php +++ b/src/Caching/EventListener.php @@ -8,7 +8,6 @@ namespace Webfactory\Bundle\WfdMetaBundle\Caching; -use ReflectionObject; use SplObjectStorage; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\ControllerEvent; @@ -38,21 +37,19 @@ public function __construct(MetaQueryFactory $metaQueryFactory, $debug) public function onKernelController(ControllerEvent $event) { - $controller = $event->getController(); - $request = $event->getRequest(); - - $attribute = $this->findAttribute($controller); + $attributes = $event->getAttributes(Send304IfNotModified::class); - if (!$attribute) { + if (!$attributes) { return; } - $lastTouched = $attribute->calculateLastModified($this->metaQueryFactory); + $lastTouched = $attributes[0]->calculateLastModified($this->metaQueryFactory); if (!$lastTouched) { return; } + $request = $event->getRequest(); $this->lastTouchedResults[$request] = $lastTouched; /* @@ -73,7 +70,7 @@ public function onKernelController(ControllerEvent $event) if ($response->isNotModified($request)) { $event->setController(function () use ($response) { return $response; - }); + }, $event->getAttributes()); } } @@ -86,21 +83,4 @@ public function onKernelResponse(ResponseEvent $event) $response->setLastModified($this->lastTouchedResults[$request]); } } - - /** - * @param $callback array A PHP callback (array) pointing to the method to reflect on. - */ - protected function findAttribute($callback): ?Send304IfNotModified - { - if (!\is_array($callback)) { - return null; - } - - $object = new ReflectionObject($callback[0]); - $method = $object->getMethod($callback[1]); - - $attributes = $method->getAttributes(Send304IfNotModified::class); - - return $attributes ? $attributes[0]->newInstance() : null; - } }