['form-control'], 'name' => null, 'value' => null, 'label' => null ]; $this->args = array_merge($default,$args); } abstract public static function get(array $args); /** * add label to form field * @return string * */ public function label($class = null): string { $classes = $class ? 'class="'.$class.'"' : ''; return ''; } /** * add name to form field * @return string * */ public function name(): string { return $this->args['name']; } /** * add name to form field * @return string * */ public function placeholder(): string { return $this->args['placeholder'] ?? ''; } /** * add parent wrapper for field * @return string * */ public function field_before(): string { return '
'; } public function info():string { return $this->args['info'] ?? ''; } /** * add parent wrapper for end div * @return string * */ public function field_after(): string { $markup = ''; if (!empty($this->info())){ $markup .= ''.$this->info().''; } return $markup.'
'; } public function field_class(): string { if (isset($this->args['class']) && !is_array($this->args['class'])) { return 'form-control'; } return implode(' ', $this->args['class']); } /** * get field value * */ public function value(){ return $this->args['value']; } /** * render field markup * */ abstract public function render(); }