Вход Регистрация
Файл: src/vendor/way/generators/src/Way/Generators/Parsers/MigrationFieldsParser.php
Строк: 46
<?php namespace WayGeneratorsParsers;

class 
MigrationFieldsParser {

    
/**
     * Parse a string of fields, like
     * name:string, age:integer
     *
     * @param string $fields
     * @return array
     */
    
public function parse($fields)
    {
        if ( ! 
$fields) return [];

        
// name:string, age:integer
        // name:string(10,2), age:integer
        
$fields preg_split('/s?,s/'$fields);

        
$parsed = [];

        foreach(
$fields as $index => $field)
        {
            
// Example:
            // name:string:nullable => ['name', 'string', 'nullable']
            // name:string(15):nullable
            
$chunks preg_split('/s?:s?/'$fieldnull);

            
// The first item will be our property
            
$property array_shift($chunks);

            
// The next will be the schema type
            
$type array_shift($chunks);

            
$args null;

            
// See if args were provided, like:
            // name:string(10)
            
if (preg_match('/(.+?)(([^)]+))/'$type$matches))
            {
                
$type $matches[1];
                
$args $matches[2];
            }

            
// Finally, anything that remains will
            // be our decorators
            
$decorators $chunks;

            
$parsed[$index] = ['field' => $property'type' => $type];

            if (isset(
$args)) $parsed[$index]['args'] = $args;
            if (
$decorators$parsed[$index]['decorators'] = $decorators;
        }

        return 
$parsed;
    }

}
Онлайн: 0
Реклама