From 036e72210db356c4b16231660a94db04ae9de51c Mon Sep 17 00:00:00 2001 From: Emmanuel BORGES Date: Fri, 8 Mar 2019 11:29:43 +0100 Subject: [PATCH] Fix Cache error while using anonymous class --- .../Component/Validator/Mapping/Cache/Psr6Cache.php | 5 +++++ .../Validator/Tests/Mapping/Cache/Psr6CacheTest.php | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Symfony/Component/Validator/Mapping/Cache/Psr6Cache.php b/src/Symfony/Component/Validator/Mapping/Cache/Psr6Cache.php index 73c9513c168a..a99d3ae70001 100644 --- a/src/Symfony/Component/Validator/Mapping/Cache/Psr6Cache.php +++ b/src/Symfony/Component/Validator/Mapping/Cache/Psr6Cache.php @@ -70,6 +70,11 @@ public function write(ClassMetadata $metadata) */ private function escapeClassName($class) { + if (false !== strpos($class, '@')) { + // anonymous class: replace all PSR6-reserved characters + return str_replace(["\0", '\\', '/', '@', ':', '{', '}', '(', ')'], '.', $class); + } + return str_replace('\\', '.', $class); } } diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Cache/Psr6CacheTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Cache/Psr6CacheTest.php index c11dddbf6ff9..fcac5e232ae4 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/Cache/Psr6CacheTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/Cache/Psr6CacheTest.php @@ -23,4 +23,12 @@ public function testNameCollision() $this->cache->write($metadata); $this->assertFalse($this->cache->has('Foo_Bar')); } + + public function testNameWithInvalidChars() + { + $metadata = new ClassMetadata('class@anonymous/path/file'); + + $this->cache->write($metadata); + $this->assertTrue($this->cache->has('class@anonymous/path/file')); + } }