public static function create($name, $attributes)
    {
        // Not supported is type=image, <button>, list, output, select-optgroup
        $types = [

            // Standard HTML 4.01
            'text'              => '\Anax\HTMLForm\FormElementText',
            'file'              => '\Anax\HTMLForm\FormElementFile',
            'password'          => '\Anax\HTMLForm\FormElementPassword',
            'hidden'            => '\Anax\HTMLForm\FormElementHidden',
            'textarea'          => '\Anax\HTMLForm\FormElementTextarea',
            'radio'             => '\Anax\HTMLForm\FormElementRadio',
            'checkbox'          => '\Anax\HTMLForm\FormElementCheckbox',
            'select'            => '\Anax\HTMLForm\FormElementSelect',
            'select-multiple'   => '\Anax\HTMLForm\FormElementSelectMultiple',
            'submit'            => '\Anax\HTMLForm\FormElementSubmit',
            'reset'             => '\Anax\HTMLForm\FormElementReset',
            'button'            => '\Anax\HTMLForm\FormElementButton',

            // HTML5
            'color'             => '\Anax\HTMLForm\FormElementColor',
            'date'              => '\Anax\HTMLForm\FormElementDate',
            'number'            => '\Anax\HTMLForm\FormElementNumber',
            'range'             => '\Anax\HTMLForm\FormElementRange',
            'tel'               => '\Anax\HTMLForm\FormElementTel',
            'email'             => '\Anax\HTMLForm\FormElementEmail',
            'url'               => '\Anax\HTMLForm\FormElementUrl',
            'search'            => '\Anax\HTMLForm\FormElementSearch',
            'file-multiple'     => '\Anax\HTMLForm\FormElementFileMultiple',
            'datetime'          => '\Anax\HTMLForm\FormElementDatetime',
            'datetime-local'    => '\Anax\HTMLForm\FormElementDatetimeLocal',
            'month'             => '\Anax\HTMLForm\FormElementMonth',
            'time'              => '\Anax\HTMLForm\FormElementTime',
            'week'              => '\Anax\HTMLForm\FormElementWeek',

            // Custom
            'search-widget'     => '\Anax\HTMLForm\FormElementSearchWidget',
            'checkbox-multiple' => '\Anax\HTMLForm\FormElementCheckboxMultiple',
            // Address
        ];

        // $attributes['type'] must contain a valid type creating an object
        // to succeed.
        $type = isset($attributes['type']) ? $attributes['type'] : null;
        if (!($type && isset($types[$type]))) {
            throw new Exception("Form element does not exists and can not be created: $name - $type");
        }
        return new $types[$type]($name, $attributes);
    }
public static function create($name, $attributes)
    {
        // Not supported is type=image, <button>, list, output, select-optgroup
        $types = [

            // Standard HTML 4.01
            'text'              => '\Anax\HTMLForm\FormElementText',
            'file'              => '\Anax\HTMLForm\FormElementFile',
            'password'          => '\Anax\HTMLForm\FormElementPassword',
            'hidden'            => '\Anax\HTMLForm\FormElementHidden',
            'textarea'          => '\Anax\HTMLForm\FormElementTextarea',
            'radio'             => '\Anax\HTMLForm\FormElementRadio',
            'checkbox'          => '\Anax\HTMLForm\FormElementCheckbox',
            'select'            => '\Anax\HTMLForm\FormElementSelect',
            'select-multiple'   => '\Anax\HTMLForm\FormElementSelectMultiple',
            'submit'            => '\Anax\HTMLForm\FormElementSubmit',
            'reset'             => '\Anax\HTMLForm\FormElementReset',
            'button'            => '\Anax\HTMLForm\FormElementButton',

            // HTML5
            'color'             => '\Anax\HTMLForm\FormElementColor',
            'date'              => '\Anax\HTMLForm\FormElementDate',
            'number'            => '\Anax\HTMLForm\FormElementNumber',
            'range'             => '\Anax\HTMLForm\FormElementRange',
            'tel'               => '\Anax\HTMLForm\FormElementTel',
            'email'             => '\Anax\HTMLForm\FormElementEmail',
            'url'               => '\Anax\HTMLForm\FormElementUrl',
            'search'            => '\Anax\HTMLForm\FormElementSearch',
            'file-multiple'     => '\Anax\HTMLForm\FormElementFileMultiple',
            'datetime'          => '\Anax\HTMLForm\FormElementDatetime',
            'datetime-local'    => '\Anax\HTMLForm\FormElementDatetimeLocal',
            'month'             => '\Anax\HTMLForm\FormElementMonth',
            'time'              => '\Anax\HTMLForm\FormElementTime',
            'week'              => '\Anax\HTMLForm\FormElementWeek',

            // Custom
            'search-widget'     => '\Anax\HTMLForm\FormElementSearchWidget',
            'checkbox-multiple' => '\Anax\HTMLForm\FormElementCheckboxMultiple',
            // Address
        ];

        // $attributes['type'] must contain a valid type creating an object
        // to succeed.
        $type = isset($attributes['type']) ? $attributes['type'] : null;
        if (!($type && isset($types[$type]))) {
            throw new Exception("Form element does not exists and can not be created: $name - $type");
        }
        return new $types[$type]($name, $attributes);
    }
public static function create ( $ name , $ attributes ) { // Not supported is type=image, <button>, list, output, select-optgroup $ types = [ // Standard HTML 4.01 'text' => '\Anax\HTMLForm\FormElementText' , 'file' => '\Anax\HTMLForm\FormElementFile' , 'password' => '\Anax\HTMLForm\FormElementPassword' , 'hidden' => '\Anax\HTMLForm\FormElementHidden' , 'textarea' => '\Anax\HTMLForm\FormElementTextarea' , 'radio' => '\Anax\HTMLForm\FormElementRadio' , 'checkbox' => '\Anax\HTMLForm\FormElementCheckbox' , 'select' => '\Anax\HTMLForm\FormElementSelect' , 'select-multiple' => '\Anax\HTMLForm\FormElementSelectMultiple' , 'submit' => '\Anax\HTMLForm\FormElementSubmit' , 'reset' => '\Anax\HTMLForm\FormElementReset' , 'button' => '\Anax\HTMLForm\FormElementButton' , // HTML5 'color' => '\Anax\HTMLForm\FormElementColor' , 'date' => '\Anax\HTMLForm\FormElementDate' , 'number' => '\Anax\HTMLForm\FormElementNumber' , 'range' => '\Anax\HTMLForm\FormElementRange' , 'tel' => '\Anax\HTMLForm\FormElementTel' , 'email' => '\Anax\HTMLForm\FormElementEmail' , 'url' => '\Anax\HTMLForm\FormElementUrl' , 'search' => '\Anax\HTMLForm\FormElementSearch' , 'file-multiple' => '\Anax\HTMLForm\FormElementFileMultiple' , 'datetime' => '\Anax\HTMLForm\FormElementDatetime' , 'datetime-local' => '\Anax\HTMLForm\FormElementDatetimeLocal' , 'month' => '\Anax\HTMLForm\FormElementMonth' , 'time' => '\Anax\HTMLForm\FormElementTime' , 'week' => '\Anax\HTMLForm\FormElementWeek' , // Custom 'search-widget' => '\Anax\HTMLForm\FormElementSearchWidget' , 'checkbox-multiple' => '\Anax\HTMLForm\FormElementCheckboxMultiple' , // Address ] ; // $attributes['type'] must contain a valid type creating an object // to succeed. $ type = isset ( $ attributes [ 'type' ] ) ? $ attributes [ 'type' ] : null ; if ( ! ( $ type && isset ( $ types [ $ type ] ) ) ) { throw new Exception ( "Form element does not exists and can not be created: $name - $type" ) ; } return new $ types [ $ type ] ( $ name , $ attributes ) ; }
Create a formelement from an array, factory returns the correct
instance.

@param string $name       name of the element.
@param array  $attributes to use when creating the element.

@return the instance of the form element.
Create a formelement from an array factory returns the correct instance .