诸位看到这个标题可能首先想到的是__get魔术方法,窝也想到了,但是——因为我会需要用到json_encode($obj)来输出到JS访问,所以此处的some_attr只能为public。那么在调用$obj->some_attr时就不能用__get来做了。我实在不想弄个$obj->to_json()这种东西。
2 回答
冉冉说
TA贡献1877条经验 获得超1个赞
<?phpclass test{ public $var_a; public $var_b; public function __get($name) { //do something ... //ext: $pre = substr($name,0,1); $var = substr($name,1); if($pre !== '_') return; if(!property_exists($this,$var)) return; if(!method_exists($this,$name)) return; $this->$name(); } protected function _var_a() { $this->var_a = 'a'; return $this->var_a; } }$test = new test();$test->_var_a;$str = json_encode($test);var_dump($str);
这是什么需求。还是我理解错了?
直接外部操作不就行了,何必这么繁。
湖上湖
TA贡献2003条经验 获得超2个赞
你的意思是要在类内部指定哪些成员要被序列化吧:
1)让你的类去实现Serializable接口(5.1就支持了),自己写个serialize方法返回json_encode过的数据;
2)或者去实现JsonSerializable接口(5.4+)。
- 2 回答
- 0 关注
- 82 浏览
添加回答
举报
0/150
提交
取消