1

这是困扰我一段时间的事情,今天我找到了一个相对简单的解决方案,我想我会分享,因为我似乎找不到任何体面的答案。

我的数据库包装器有以下代码:

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

4

1 回答 1

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!"}
于 2012-11-05T16:31:32.203 回答