假设我已经动态创建了映射数据库表行的对象。在编写代码时,我不知道表的列。所以我在字段中存储的是数据库连接,表名和主键。我想创建一个接收字段的方法,而不是:
$field_value = $row_object->get_field("weight");
我希望使用我的对象的代码看起来像这样:
$field_value = $row_object->get_field_weight(); //where weight is column name in db
我不知道在编码时需要什么样的名字,比如get_field_weight()。 我该如何实现呢?
答案 0 :(得分: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];
}
}
您也可以将此用于“设置”操作,并进一步改进。