諸位看到這個(gè)標(biāo)題可能首先想到的是__get魔術(shù)方法,窩也想到了,但是——因?yàn)槲視?huì)需要用到j(luò)son_encode($obj)來(lái)輸出到JS訪問(wèn),所以此處的some_attr只能為public。那么在調(diào)用$obj->some_attr時(shí)就不能用__get來(lái)做了。我實(shí)在不想弄個(gè)$obj->to_json()這種東西。
2 回答

冉冉說(shuō)
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
<?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);
這是什么需求。還是我理解錯(cuò)了?
直接外部操作不就行了,何必這么繁。

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
你的意思是要在類(lèi)內(nèi)部指定哪些成員要被序列化吧:
1)讓你的類(lèi)去實(shí)現(xiàn)Serializable接口(5.1就支持了),自己寫(xiě)個(gè)serialize方法返回json_encode過(guò)的數(shù)據(jù);
2)或者去實(shí)現(xiàn)JsonSerializable接口(5.4+)。
- 2 回答
- 0 關(guān)注
- 125 瀏覽
添加回答
舉報(bào)
0/150
提交
取消