【发布时间】:2020-05-03 14:53:32
【问题描述】:
我想创建类来创建字段,但在 Laravel Nova 中,此类称为 Text::make()->placeholder() 等。这意味着该类中的方法是静态的。
这是我的字段类:
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() 方法来获取数组时,每个项目都返回最后一个项目的名称和占位符,因为它是静态的。我该如何解决这个问题。
【问题讨论】:
-
您希望它是静态的是否有任何功能原因?