这一直困扰着我一段时间,今天我找到了一个相对简单的解决方案,我认为我会分享,因为我似乎找不到任何合适的答案。
我有我的DB包装器的代码:
function find($id) {
//Fetch the results
//Put the results into an array
return (object) $results;
}
所以我能做到:
$result = DB::find(1);
echo $result->name; #=> Hello world
但我需要能够为新结果分配方法。在这种情况下to_json
答案 0 :(得分:1)
你可以这样做:
class Result {
protected $results;
public function __construct($results) {
$this->results = $results;
foreach($results as $key => $value) {
$this->$key = $value;
}
}
public function to_json() {
return json_encode($this->results);
}
}
现在,而不是返回return (object) $result
,只需执行:return new Result($result);
$result = DB::find(1);
echo $result->name; #=> Hello world
echo $result->to_json(); #=> {"name":"Hello world","content":"Hello World!"}