<?php 
 
declare(strict_types=1); 
 
namespace Picamator\TransferObject\TransferGenerator\Definition\Enum; 
 
enum BuildInTypeEnum: string 
{ 
    case BOOL = 'bool'; 
    case TRUE = 'true'; 
    case FALSE = 'false'; 
    case INT = 'int'; 
    case FLOAT = 'float'; 
    case STRING = 'string'; 
    case ARRAY = 'array'; 
    case ARRAY_OBJECT = 'ArrayObject'; 
 
    case ITERABLE = 'iterable'; 
    case NULL = 'null'; 
    case OBJECT = 'object'; 
    case MIXED = 'mixed'; 
    case CALLABLE = 'callable'; 
 
    private const array NOT_ALLOWED = [ 
        self::ITERABLE, 
        self::NULL, 
        self::OBJECT, 
        self::MIXED, 
        self::CALLABLE, 
    ]; 
 
    public static function getTrueFalse(bool $value): self 
    { 
        if ($value === true) { 
            return self::TRUE; 
        } 
 
        return self::FALSE; 
    } 
 
    public function isArray(): bool 
    { 
        return $this === self::ARRAY; 
    } 
 
    public function isArrayObject(): bool 
    { 
        return $this === self::ARRAY_OBJECT; 
    } 
 
    public function isAllowed(): bool 
    { 
        return !in_array($this, self::NOT_ALLOWED, true); 
    } 
} 
 
 |