脚本宝典收集整理的这篇文章主要介绍了如何在PHP中实现__isset()魔术方法?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我到目前为止
abstract class FooBase{ public function __isset($name){ $getter = 'get'.ucFirst($name); if(method_exists($this,$getter)) return isset($this->$getter()); // not working :( // Fatal error: Can't use method return value in wrITe context } public function __get($name){ $getter = 'get'.uCFirst($name); if(method_exists($this,$getter)) return $this->$getter(); } public function __set($name,$value){ $setter = 'set'.ucfirst($name); if(method_exists($this,$setter)) return $this->$setter($value); } public function __call($name,$arguments){ $caller = 'call'.ucfirst($name); if(method_exists($this,$caller)) return $this->$caller($arguments); } }@H_304_4@用法:
class Foo extends FooBase{ PRivate $my_stuff; public function getStuff(){ return $this->my_stuff; } public function setStuff($stuff){ $this->my_stuff = $stuff; } } $foo = new Foo(); if(empty($foo->stuff)) echo "empty() works! \n"; else "empty() doesn't work:( \n"; $foo->stuff = 'something'; if(empty($foo->stuff)) echo "empty() doesn't work:( \n"; else "empty() works! \n";如何使它如此空/ isset返回true / false如果:
> my_stuff以上没有设置,或者在空()的情况下有一个空值或零值
>该方法不存在(不知道如果neeed,因为我认为你得到一个致命的错误)?
public function __isset($name){ $getter = 'get'.ucfirst($name); return method_exists($this,$getter) && !is_null($this->$getter()); }
这检查$getter()是否存在(如果不存在,则假定该属性也不存在)并返回非空值.因此,NULL将导致它返回false,正如您在阅读isset()
的PHP手册后所期望的那样.
以上是脚本宝典为你收集整理的如何在PHP中实现__isset()魔术方法?全部内容,希望文章能够帮你解决如何在PHP中实现__isset()魔术方法?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。