Я хочу создать класс для создания полей, но в Laravel Nova этот класс называется как Text::make()->placeholder()
и т. Д. c. Это означает, что методы внутри этого класса имеют статус c.
Это мой класс поля:
class Field
{
private $field = [];
public function set($key, $value)
{
$this->field[$key] = $value;
}
public function get()
{
return $this->field;
}
}
class Text
{
private static $field;
public static function make($name)
{
self::$field = new Field;
self::$field->set('@saturn_type', 'string');
self::$field->set('@saturn_key', $name);
self::$field->set('@saturn_field', 'text');
return new Text;
}
public function placeholder($value)
{
self::$field->set('placeholder', $value);
return $this;
}
public function required()
{
self::$field->set('required', true);
return $this;
}
public function translate()
{
self::$field->set('translate', true);
return $this;
}
public function wysiwyg()
{
self::$field->set('wysiwyg', true);
return $this;
}
public function get()
{
return (array) self::$field->get();
}
}
, и вот как я его называю:
$fields = [
Text::make('name')->placeholder('Full Name'),
Text::make('email')->placeholder('Email'),
Text::make('password')->placeholder('Password'),
]
$lastArray = $fields->map(function ($field) {
return $field->get();
}
);
Но когда я вызываю метод get () для каждого элемента в этом массиве, чтобы получить массив, каждый элемент возвращает имя и заполнитель последнего элемента, потому что это stati c. Как я могу решить это.