向STDClass添加函数

时间:2012-11-05 16:31:32

标签: php

这一直困扰着我一段时间,今天我找到了一个相对简单的解决方案,我认为我会分享,因为我似乎找不到任何合适的答案。

我有我的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

1 个答案:

答案 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!"}