* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class Native implements ResolverInterface { /** * @inheritDoc */ public function resolveClass(\ReflectionClass $reflection): ?TypeInterface { return null; } /** * @inheritDoc */ public function resolveProperty(\ReflectionProperty $reflection): ?TypeInterface { if (!method_exists($reflection, 'getType')) { // for everything < PHP 7.4 return null; } $type = $reflection->getType(); if ($type instanceof \ReflectionNamedType) { return $this->getPropertyForType($type, $reflection); } return null; } private function getPropertyForType(\ReflectionNamedType $type, \ReflectionProperty $property): ?TypeInterface { $name = $type->getName(); if ($name === 'string') { return TypeFactory::getString(); } elseif ($name === 'float') { return TypeFactory::getNumber(); } elseif ($name === 'int') { return TypeFactory::getInteger(); } elseif ($name === 'bool') { return TypeFactory::getBoolean(); } elseif ($name === 'array') { // in this case we have no way to determine the type inside the // array in the future this is maybe possible return null; } elseif ($name === 'void') { return null; } elseif ($name === 'self') { $class = $property->getDeclaringClass()->getName(); return TypeFactory::getReference($class); } elseif (class_exists($name)) { return TypeFactory::getReference($name); } return null; } } __halt_compiler();----SIGNATURE:----APoLzIWWmWaqNEwv37j4b7HtRtRzq0cRfQH5P0NwkiZmzDeE7DwDvuILraeIeLsyYysxrjYvlqDFS0HBaZOXk0FFjZlq0saz5FpiGzQvsvFCwwAuXY/2OfLDrumy5hJqBNKlP88bA/uk/GiLx083Kqj39O9hU9aZjYv712lQmc/0HQ0sd3Ery+BRhr6m6pcOlS/VnQ/uApc9ZKdFV5a5991RN+CHsyQjBiN0h+EQ5RFG8S/xGu0aNFIinuDu9B35Xkq3c5Cbva5OhWWKdUhHWzyhZLTPT/ZAFQ4oqaRjOvNZm0S8Ds+ZMxseLN6k4gdYLATLlPNd9PkDkjacpE/qRbtjaDPOiBInK2QdNiV/U2/MR1ZN9KFsKaPDbTdfqMp0gpzy5tk8ETY6mJ86Wr41RxMs6AVErOchFhplTmBhUez8jErJ0RaffbCGEqH0uotZ8vwD/XVlQhDRZhDSOn6iYfSK6Xz0dBlL1pGNVOdxiy7XMka5yBxeKh41RD3L2oBlh44sn6f/borE8kbc9rDM7/y36h+nVif9YGhC8W1HbPmKAxXzKnbuZi4Oc7qybNTljKOJ7B0xHK4SU63DqEervdErZtTmSkDjrcYtHKtm/NQi80qOsl9BEH3KipcqQ1d3cUrH/H2kLuYtTB1LWpsj0sWJ9isIv4W6sjzlGPL35FU=----ATTACHMENT:----Njk4MDY5OTA0MDYxNDQ2OCA3Mzg3OTI3MDA2MTAyMjAyIDQ5NTE1NDQyMzQ0ODM4MjA=