亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP:如何在調用$obj->some_attr之前自動調用$obj->some_func()

PHP:如何在調用$obj->some_attr之前自動調用$obj->some_func()

慕森卡 2019-04-06 08:31:56
諸位看到這個標題可能首先想到的是__get魔術方法,窩也想到了,但是——因為我會需要用到json_encode($obj)來輸出到JS訪問,所以此處的some_attr只能為public。那么在調用$obj->some_attr時就不能用__get來做了。。。有沒有什么更“魔術”一點的方法。。?我實在不想弄個$obj->to_json()這種東西。。。
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

你的意思是要在類內部指定哪些成員要被序列化吧:1)讓你的類去實現Serializable接口(5.1就支持了),自己寫個serialize方法返回json_encode過的數據;2)或者去實現JsonSerializable接口(5.4+)。
                            
查看完整回答
反對 回復 2019-04-06
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

classtest
{
public$var_a;
public$var_b;
publicfunction__get($name)
{
//dosomething...
//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();
}
protectedfunction_var_a()
{
$this->var_a='a';
return$this->var_a;
}
}
$test=newtest();
$test->_var_a;
$str=json_encode($test);
var_dump($str);這是什么需求。還是我理解錯了?
直接外部操作不就行了,何必這么繁。
                            
查看完整回答
反對 回復 2019-04-06
  • 2 回答
  • 0 關注
  • 416 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號