LeanMapper\Reflection\PropertyFactory::fixDefaultValue PHP Method

fixDefaultValue() private static method

private static fixDefaultValue ( mixed $value, PropertyType $propertyType, boolean $isNullable ) : mixed
$value mixed
$propertyType PropertyType
$isNullable boolean
return mixed
    private static function fixDefaultValue($value, PropertyType $propertyType, $isNullable)
    {
        if ($isNullable and strtolower($value) === 'null') {
            return null;
        } elseif (!$propertyType->isBasicType()) {
            throw new InvalidAnnotationException('Only properties of basic types may have default values specified.');
        }
        switch ($propertyType->getType()) {
            case 'boolean':
                $lower = strtolower($value);
                if ($lower !== 'true' and $lower !== 'false') {
                    throw new InvalidAnnotationException("Property of type boolean cannot have default value '{$value}'.");
                }
                return $lower === 'true';
            case 'integer':
                if (!is_numeric($value) && !preg_match('~0x[0-9a-f]+~', $value)) {
                    throw new InvalidAnnotationException("Property of type integer cannot have default value '{$value}'.");
                }
                return intval($value, 0);
            case 'float':
                if (!is_numeric($value)) {
                    throw new InvalidAnnotationException("Property of type float cannot have default value '{$value}'.");
                }
                return floatval($value);
            case 'array':
                if (strtolower($value) !== 'array()' and $value !== '[]') {
                    throw new InvalidAnnotationException("Property of type array cannot have default value '{$value}'.");
                }
                return [];
            case 'string':
                if ($value === '\'\'' or $value === '""') {
                    return '';
                }
                return $value;
            default:
                return $value;
        }
    }