From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mapping/RuntimeReflectionService.php | 111 +++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 vendor/doctrine/persistence/src/Persistence/Mapping/RuntimeReflectionService.php (limited to 'vendor/doctrine/persistence/src/Persistence/Mapping/RuntimeReflectionService.php') diff --git a/vendor/doctrine/persistence/src/Persistence/Mapping/RuntimeReflectionService.php b/vendor/doctrine/persistence/src/Persistence/Mapping/RuntimeReflectionService.php new file mode 100644 index 0000000..399e057 --- /dev/null +++ b/vendor/doctrine/persistence/src/Persistence/Mapping/RuntimeReflectionService.php @@ -0,0 +1,111 @@ +supportsTypedPropertiesWorkaround = version_compare(phpversion(), '7.4.0') >= 0; + } + + /** + * {@inheritDoc} + */ + public function getParentClasses(string $class) + { + if (! class_exists($class)) { + throw MappingException::nonExistingClass($class); + } + + $parents = class_parents($class); + + assert($parents !== false); + + return $parents; + } + + /** + * {@inheritDoc} + */ + public function getClassShortName(string $class) + { + $reflectionClass = new ReflectionClass($class); + + return $reflectionClass->getShortName(); + } + + /** + * {@inheritDoc} + */ + public function getClassNamespace(string $class) + { + $reflectionClass = new ReflectionClass($class); + + return $reflectionClass->getNamespaceName(); + } + + /** + * @psalm-param class-string $class + * + * @return ReflectionClass + * @psalm-return ReflectionClass + * + * @template T of object + */ + public function getClass(string $class) + { + return new ReflectionClass($class); + } + + /** + * {@inheritDoc} + */ + public function getAccessibleProperty(string $class, string $property) + { + $reflectionProperty = new RuntimeReflectionProperty($class, $property); + + if ($this->supportsTypedPropertiesWorkaround && ! array_key_exists($property, $this->getClass($class)->getDefaultProperties())) { + $reflectionProperty = new TypedNoDefaultReflectionProperty($class, $property); + } + + $reflectionProperty->setAccessible(true); + + return $reflectionProperty; + } + + /** + * {@inheritDoc} + */ + public function hasPublicMethod(string $class, string $method) + { + try { + $reflectionMethod = new ReflectionMethod($class, $method); + } catch (ReflectionException $e) { + return false; + } + + return $reflectionMethod->isPublic(); + } +} -- cgit v1.2.3