不确定这是否有意义,但我有DRY
的情况,因为我必须创建大约20个类。 (这是为了Laravel雄辩的ORM,其中每个类代表一个表):
每个班级都是这样的:
class Child extends Parent
{
public function __construct()
{
array_push($this->appends, 'item');
array_push($this->hidden, 'item_id', 'items');
}
public function items()
{
return $this->hasOne('Item', 'id', 'item_id');
}
public function getItemAttribute()
{
return $this->items->name;
}
}
注意item
的重复,(如果这里有任何意义)我如何从一系列“项目”中“生成”所有这些?我想象的可能是:
public function __construct()
{
$fields = ['item', 'price'];
foreach ($fields as $field) {
array_push($this->appends, $field);
array_push($this->hidden, $field.'_id', str_plural($field));
// now create our functions, i have no idea what i'm doing here
public function str_plural($field)
{
return $this->hasOne(ucfirst($field), 'id', $field.'_id');
}
public function get{ucfirst($field)}Attribute()
{
return $this->{str_plural($field)}->name;
}
}