FOF30\Model\DataModel\Filter\AbstractFilter::getFieldType PHP Метод

getFieldType() публичный статический Метод

Get the class name based on the field Type
public static getFieldType ( string $type ) : string
$type string The type of the field
Результат string the class name suffix
    public static function getFieldType($type)
    {
        // Remove parentheses, indicating field options / size (they don't matter in type detection)
        if (!empty($type)) {
            list($type, ) = explode('(', $type);
        }
        $detectedType = null;
        switch (trim($type)) {
            case 'varchar':
            case 'text':
            case 'smalltext':
            case 'longtext':
            case 'char':
            case 'mediumtext':
            case 'character varying':
            case 'nvarchar':
            case 'nchar':
                $detectedType = 'Text';
                break;
            case 'date':
            case 'datetime':
            case 'time':
            case 'year':
            case 'timestamp':
            case 'timestamp without time zone':
            case 'timestamp with time zone':
                $detectedType = 'Date';
                break;
            case 'tinyint':
            case 'smallint':
                $detectedType = 'Boolean';
                break;
        }
        // Sometimes we have character types followed by a space and some cruft. Let's handle them.
        if (is_null($detectedType) && !empty($type)) {
            list($type, ) = explode(' ', $type);
            switch (trim($type)) {
                case 'varchar':
                case 'text':
                case 'smalltext':
                case 'longtext':
                case 'char':
                case 'mediumtext':
                case 'nvarchar':
                case 'nchar':
                    $detectedType = 'Text';
                    break;
                case 'date':
                case 'datetime':
                case 'time':
                case 'year':
                case 'timestamp':
                    $detectedType = 'Date';
                    break;
                case 'tinyint':
                case 'smallint':
                    $detectedType = 'Boolean';
                    break;
                default:
                    $detectedType = 'Number';
                    break;
            }
        }
        // If all else fails assume it's a Number and hope for the best
        if (empty($detectedType)) {
            $detectedType = 'Number';
        }
        return $detectedType;
    }

Usage Example

Пример #1
0
 /**
  * @group           AbstractFilter
  * @group           AbstractFilterGetFieldType
  * @covers          FOF30\Model\DataModel\Filter\AbstractFilter::getFieldType
  * @dataProvider    AbstractFilterDataprovider::getTestGetFieldType
  */
 public function testGetFieldType($test, $check)
 {
     $msg = 'AbstractFilter::getFieldType %s - Case: ' . $check['case'];
     $result = AbstractFilter::getFieldType($test['type']);
     $this->assertEquals($check['result'], $result, sprintf($msg, 'Failed to get the correct field type'));
 }