Backups Created:
/home/japatmex/public_html/wp-content/edit-wolf.php
Savvy
W
olf -
MANAGER
Edit File: HasPropertyType.php
<?php declare(strict_types = 1); namespace PHPStan\Type\Accessory; use PHPStan\Reflection\ClassMemberAccessAnswerer; use PHPStan\Reflection\TrivialParametersAcceptor; use PHPStan\TrinaryLogic; use PHPStan\Type\CompoundType; use PHPStan\Type\IntersectionType; use PHPStan\Type\Traits\NonGenericTypeTrait; use PHPStan\Type\Traits\ObjectTypeTrait; use PHPStan\Type\Type; use PHPStan\Type\UnionType; class HasPropertyType implements AccessoryType, CompoundType { use ObjectTypeTrait; use NonGenericTypeTrait; /** @var string */ private $propertyName; public function __construct(string $propertyName) { $this->propertyName = $propertyName; } /** * @return string[] */ public function getReferencedClasses(): array { return []; } public function getPropertyName(): string { return $this->propertyName; } public function accepts(Type $type, bool $strictTypes): TrinaryLogic { return TrinaryLogic::createFromBoolean($this->equals($type)); } public function isSuperTypeOf(Type $type): TrinaryLogic { return $type->hasProperty($this->propertyName); } public function isSubTypeOf(Type $otherType): TrinaryLogic { if ($otherType instanceof UnionType || $otherType instanceof IntersectionType) { return $otherType->isSuperTypeOf($this); } if ($otherType instanceof self) { $limit = TrinaryLogic::createYes(); } else { $limit = TrinaryLogic::createMaybe(); } return $limit->and($otherType->hasProperty($this->propertyName)); } public function isAcceptedBy(Type $acceptingType, bool $strictTypes): TrinaryLogic { return $this->isSubTypeOf($acceptingType); } public function equals(Type $type): bool { return $type instanceof self && $this->propertyName === $type->propertyName; } public function describe(\PHPStan\Type\VerbosityLevel $level): string { return sprintf('hasProperty(%s)', $this->propertyName); } public function hasProperty(string $propertyName): TrinaryLogic { if ($this->propertyName === $propertyName) { return TrinaryLogic::createYes(); } return TrinaryLogic::createMaybe(); } public function getCallableParametersAcceptors(ClassMemberAccessAnswerer $scope): array { return [new TrivialParametersAcceptor()]; } public function traverse(callable $cb): Type { return $this; } public static function __set_state(array $properties): Type { return new self($properties['propertyName']); } }