Nextras\Orm\Entity\Reflection\ModifierParser::processKeyword PHP Méthode

processKeyword() private méthode

private processKeyword ( $value, ReflectionClass $reflectionClass )
$reflectionClass ReflectionClass
    private function processKeyword($value, ReflectionClass $reflectionClass)
    {
        if (strcasecmp($value, 'true') === 0) {
            return true;
        } elseif (strcasecmp($value, 'false') === 0) {
            return false;
        } elseif (strcasecmp($value, 'null') === 0) {
            return null;
        } elseif (is_numeric($value)) {
            return $value * 1;
        } elseif (preg_match('#^[a-z0-9_\\\\]+::[a-z0-9_]+(\\*)?$#i', $value)) {
            list($className, $const) = explode('::', $value, 2);
            if ($className === 'self' || $className === 'static') {
                $reflection = $reflectionClass;
            } else {
                $className = AnnotationsParser::expandClassName($className, $reflectionClass);
                $reflection = new ReflectionClass($className);
            }
            $enum = [];
            $constants = $reflection->getConstants();
            if (strpos($const, '*') !== false) {
                $prefix = rtrim($const, '*');
                $prefixLength = strlen($prefix);
                $count = 0;
                foreach ($constants as $name => $value) {
                    if (substr($name, 0, $prefixLength) === $prefix) {
                        $enum[$value] = $value;
                        $count += 1;
                    }
                }
                if ($count === 0) {
                    throw new InvalidModifierDefinitionException("No constant matches {$reflection->name}::{$const} pattern.");
                }
            } else {
                if (!array_key_exists($const, $constants)) {
                    throw new InvalidModifierDefinitionException("Constant {$reflection->name}::{$const} does not exist.");
                }
                $value = $reflection->getConstant($const);
                $enum[$value] = $value;
            }
            return array_values($enum);
        } else {
            return $value;
        }
    }