oop-PHP:如何在调用$obj->some_attr之前自动调用$obj->some_func()
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oop-PHP:如何在调用$obj->some_attr之前自动调用$obj->some_func(),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1244字,纯文字阅读大概需要2分钟。
内容图文
诸位看到这个标题可能首先想到的是__get魔术方法,窝也想到了,但是——因为我会需要用到json_encode($obj)来输出到JS访问,所以此处的some_attr只能为public。
那么在调用$obj->some_attr时就不能用__get来做了。。。
有没有什么更“魔术”一点的方法。。?
我实在不想弄个$obj->to_json()这种东西。。。
回复内容:
诸位看到这个标题可能首先想到的是__get魔术方法,窝也想到了,但是——
因为我会需要用到json_encode($obj)来输出到JS访问,所以此处的some_attr只能为public。
那么在调用$obj->some_attr时就不能用__get来做了。。。
有没有什么更“魔术”一点的方法。。?
我实在不想弄个$obj->to_json()这种东西。。。
你的意思是要在类内部指定哪些成员要被序列化吧:
1)让你的类去实现Serializable接口(5.1就支持了),自己写个serialize方法返回json_encode过的数据;
2)或者去实现JsonSerializable接口(5.4+)。
<?php class 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);
这是什么需求。还是我理解错了?
直接外部操作不就行了,何必这么繁。
内容总结
以上是互联网集市为您收集整理的oop-PHP:如何在调用$obj->some_attr之前自动调用$obj->some_func()全部内容,希望文章能够帮你解决oop-PHP:如何在调用$obj->some_attr之前自动调用$obj->some_func()所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。