从数组中“生成”类方法?

时间:2014-11-30 22:26:27

标签: php methods

不确定这是否有意义,但我有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;
        }
 }

0 个答案:

没有答案