From 9e6b2511b7dcf83ed27c383bba51f572d5b8efab Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 18 Aug 2025 15:33:31 +0200 Subject: [PATCH] [Config] Reduce the size of serialized resource checkers --- .../Component/Config/Resource/ClassExistenceResource.php | 6 ------ .../Component/Config/Resource/ComposerResource.php | 7 +++++++ .../Component/Config/Resource/DirectoryResource.php | 8 ++++++++ .../Component/Config/Resource/FileExistenceResource.php | 8 ++++++++ src/Symfony/Component/Config/Resource/FileResource.php | 7 +++++++ src/Symfony/Component/Config/Resource/GlobResource.php | 6 ------ .../Component/Config/Resource/ReflectionClassResource.php | 3 --- .../Component/Config/Resource/SkippingResourceChecker.php | 7 +++++++ 8 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/Symfony/Component/Config/Resource/ClassExistenceResource.php b/src/Symfony/Component/Config/Resource/ClassExistenceResource.php index 45f14fb1c989a..6973220f087b8 100644 --- a/src/Symfony/Component/Config/Resource/ClassExistenceResource.php +++ b/src/Symfony/Component/Config/Resource/ClassExistenceResource.php @@ -101,9 +101,6 @@ public function isFresh(int $timestamp): bool return $this->exists[0] xor !$exists[0]; } - /** - * @internal - */ public function __serialize(): array { if (null === $this->exists) { @@ -116,9 +113,6 @@ public function __serialize(): array ]; } - /** - * @internal - */ public function __unserialize(array $data): void { $this->resource = array_shift($data); diff --git a/src/Symfony/Component/Config/Resource/ComposerResource.php b/src/Symfony/Component/Config/Resource/ComposerResource.php index 834812253caab..4979f8d9e6c97 100644 --- a/src/Symfony/Component/Config/Resource/ComposerResource.php +++ b/src/Symfony/Component/Config/Resource/ComposerResource.php @@ -47,6 +47,13 @@ public function isFresh(int $timestamp): bool return array_values(self::$runtimeVendors) === array_values($this->vendors); } + public function __serialize(): array + { + return [ + 'vendors' => $this->vendors, + ]; + } + private static function refresh(): void { self::$runtimeVendors = []; diff --git a/src/Symfony/Component/Config/Resource/DirectoryResource.php b/src/Symfony/Component/Config/Resource/DirectoryResource.php index 5fd5f65c99939..3451ca4805ea3 100644 --- a/src/Symfony/Component/Config/Resource/DirectoryResource.php +++ b/src/Symfony/Component/Config/Resource/DirectoryResource.php @@ -93,4 +93,12 @@ public function isFresh(int $timestamp): bool return true; } + + public function __serialize(): array + { + return [ + 'resource' => $this->resource, + 'pattern' => $this->pattern, + ]; + } } diff --git a/src/Symfony/Component/Config/Resource/FileExistenceResource.php b/src/Symfony/Component/Config/Resource/FileExistenceResource.php index 4722537d87f61..5eadb54be7a57 100644 --- a/src/Symfony/Component/Config/Resource/FileExistenceResource.php +++ b/src/Symfony/Component/Config/Resource/FileExistenceResource.php @@ -48,4 +48,12 @@ public function isFresh(int $timestamp): bool { return file_exists($this->resource) === $this->exists; } + + public function __serialize(): array + { + return [ + 'resource' => $this->resource, + 'exists' => $this->exists, + ]; + } } diff --git a/src/Symfony/Component/Config/Resource/FileResource.php b/src/Symfony/Component/Config/Resource/FileResource.php index 44e5bbc5757f0..08619536d3c91 100644 --- a/src/Symfony/Component/Config/Resource/FileResource.php +++ b/src/Symfony/Component/Config/Resource/FileResource.php @@ -57,4 +57,11 @@ public function isFresh(int $timestamp): bool { return false !== ($filemtime = @filemtime($this->resource)) && $filemtime <= $timestamp; } + + public function __serialize(): array + { + return [ + 'resource' => $this->resource, + ]; + } } diff --git a/src/Symfony/Component/Config/Resource/GlobResource.php b/src/Symfony/Component/Config/Resource/GlobResource.php index 5971979207d31..a3cbabaed30a7 100644 --- a/src/Symfony/Component/Config/Resource/GlobResource.php +++ b/src/Symfony/Component/Config/Resource/GlobResource.php @@ -76,9 +76,6 @@ public function isFresh(int $timestamp): bool return $this->hash === $hash; } - /** - * @internal - */ public function __serialize(): array { $this->hash ??= $this->computeHash(); @@ -93,9 +90,6 @@ public function __serialize(): array ]; } - /** - * @internal - */ public function __unserialize(array $data): void { $this->prefix = array_shift($data); diff --git a/src/Symfony/Component/Config/Resource/ReflectionClassResource.php b/src/Symfony/Component/Config/Resource/ReflectionClassResource.php index 9cdca7c177d9d..e53ccf5f51f37 100644 --- a/src/Symfony/Component/Config/Resource/ReflectionClassResource.php +++ b/src/Symfony/Component/Config/Resource/ReflectionClassResource.php @@ -59,9 +59,6 @@ public function __toString(): string return 'reflection.'.$this->className; } - /** - * @internal - */ public function __serialize(): array { if (!isset($this->hash)) { diff --git a/src/Symfony/Component/Config/Resource/SkippingResourceChecker.php b/src/Symfony/Component/Config/Resource/SkippingResourceChecker.php index 0f0934c82efa0..7fad4daf6df11 100644 --- a/src/Symfony/Component/Config/Resource/SkippingResourceChecker.php +++ b/src/Symfony/Component/Config/Resource/SkippingResourceChecker.php @@ -34,4 +34,11 @@ public function isFresh(ResourceInterface $resource, int $timestamp): bool { return true; } + + public function __serialize(): array + { + return [ + 'skippedResourceTypes' => $this->skippedResourceTypes, + ]; + } }