PHP:我可以在方法重载(__get)中获取数组功能吗?
我想要实现的是,当我调用 $obj->CAT[15]; 时 $obj 会检查属性 CAT 是否存在,如果不存在,则动态获取值,
public function __get($var){
if($var == "CAT") return $this->cats->get_cat($cat_id);
}
所以我的问题是...如何从我的示例中获取数组的值 15?将其传递给我的 get_cat 方法?
What I'd like ti achieve is that when I call $obj->CAT[15];
the $obj would check if the property CAT exists if not, get the value on the fly
public function __get($var){
if($var == "CAT") return $this->cats->get_cat($cat_id);
}
so my question is... how to get array's value 15 from my example? to pass it to my get_cat method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
让
__get
返回ArrayAccess
它将委托给其
offsetGet
方法中的get_cat
。像这样的事情:
Have
__get
return an instance ofArrayAccess
which will delegate toget_cat
in itsoffsetGet
method.Something like this:
请参阅 http://www.php.net/ArrayAccess 来实现您自己的列表/地图
希望这会有所帮助!
see http://www.php.net/ArrayAccess to implement your own list/map
hope this helps!
如果我正确理解你想要实现的目标,你可以使用闭包:
输出:
第三个直接访问的猫是巴拉克
使用闭包访问的第三只猫是巴拉克
If I understood correctly what you want to achieve, you could use a closure:
Output:
The third directly accessed cat is Barack
The third cat accessed using closure is Barack