Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

EntityFieldMethodsViaMagicReflectionExtension.php

Namespace

mglaman\PHPStanDrupal\Reflection

File

vendor/mglaman/phpstan-drupal/src/Reflection/EntityFieldMethodsViaMagicReflectionExtension.php

View source
<?php

namespace mglaman\PHPStanDrupal\Reflection;

use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\MethodReflection;
use PHPStan\Reflection\MethodsClassReflectionExtension;
use PHPStan\Type\ObjectType;
use function array_key_exists;

/**
 * Allows some common methods on fields.
 */
class EntityFieldMethodsViaMagicReflectionExtension implements MethodsClassReflectionExtension {
    public function hasMethod(ClassReflection $classReflection, string $methodName) : bool {
        if ($classReflection->hasNativeMethod($methodName) || array_key_exists($methodName, $classReflection->getMethodTags())) {
            // Let other parts of PHPStan handle this.
            return false;
        }
        $interfaceObject = new ObjectType('Drupal\\Core\\Field\\FieldItemListInterface');
        $objectType = new ObjectType($classReflection->getName());
        if (!$interfaceObject->isSuperTypeOf($objectType)
            ->yes()) {
            return false;
        }
        if ($methodName === 'referencedEntities') {
            return true;
        }
        return false;
    }
    public function getMethod(ClassReflection $classReflection, string $methodName) : MethodReflection {
        if ($methodName === 'referencedEntities') {
            $entityReferenceFieldItemListInterfaceType = new ObjectType('Drupal\\Core\\Field\\EntityReferenceFieldItemListInterface');
            $classReflection = $entityReferenceFieldItemListInterfaceType->getClassReflection();
            assert($classReflection !== null);
        }
        return new FieldItemListMethodReflection($classReflection, $methodName);
    }

}

Classes

Title Deprecated Summary
EntityFieldMethodsViaMagicReflectionExtension Allows some common methods on fields.
RSS feed
Powered by Drupal