为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2019-04-06 08:31:57
诸位看到这个标题可能首先想到的是__get魔术方法,窝也想到了,但是——因为我会需要用到json_encode($obj)来输出到JS访问,所以此处的some_attr只能为public。那么在调用$obj->some_attr时就不能用__get来做了。。。有没有什么更“魔术”一点的方法。。?我实在不想弄个$obj->to_json()这种东西。。。
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

你的意思是要在类内部指定哪些成员要被序列化吧:1)让你的类去实现Serializable接口(5.1就支持了),自己写个serialize方法返回json_encode过的数据;2)或者去实现JsonSerializable接口(5.4+)。
                            
查看完整回答
反对 回复 2019-04-06
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

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 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信