oop - PHP:如何在调用$obj->some_attr之前自动调用$obj->some_func()
Jun 06, 2016 pm 08:51 PM
诸位看到这个标题可能首先想到的是__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);
这是什么需求。还是我理解错了?
直接外部操作不就行了,何必这么繁。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
