0

假设我已经动态创建了映射数据库表行的对象。在编写我的代码时,我对表格的列一无所知。所以我在字段中存储的是数据库连接、表名和主键。我想创建一个接收字段的方法,而不是:

$field_value = $row_object->get_field("weight");

我希望使用我的对象的代码看起来像这样:

$field_value = $row_object->get_field_weight(); //where weight is column name in db

我不知道在编码时需要什么确切的名称,例如 get_field_weight()。我该如何实施?

4

1 回答 1

2

您可能会使用__call()魔术方法:

class MyMapper{

    public function __call($method, $args){
        $parts = explode('_', $method);

        $field = array_pop($parts);

        if(!array_key_exists($field, $this->fields)){
            throw new NoSuchFieldException();
        }

       return $this->fields[$field];
    }
}

您也可以将其用于“设置”操作,并进行一些进一步的改进。

于 2013-05-23T09:32:15.853 回答