attribute-spass/src/Infrastructure/WebApp/Route/CachedRouteCollector.php
2023-01-25 22:09:06 +01:00

44 lines
1.1 KiB
PHP

<?php declare(strict_types=1);
namespace Lubian\AttributeMagic\Infrastructure\WebApp\Route;
use Lubian\AttributeMagic\Infrastructure\Event\AsListener;
use function file_exists;
use function file_get_contents;
use function file_put_contents;
use function serialize;
use function unserialize;
final class CachedRouteCollector
{
public const ROUTES_DIR = __DIR__ . '/../../../../var/routesCache';
#[AsListener(CollectRoutes::class, -10)]
public function getCached(CollectRoutes $event): void
{
if ($event->cached === false) {
return;
}
if (! file_exists(self::ROUTES_DIR)) {
return;
}
$event->routes = unserialize(file_get_contents(self::ROUTES_DIR)); //@phpstan-ignore-line
$event->stopped = true;
}
#[AsListener(CollectRoutes::class, 10)]
public function setCached(CollectRoutes $event): void
{
if ($event->cached === false) {
return;
}
file_put_contents(
self::ROUTES_DIR,
serialize($event->routes),
);
}
}