課程
/后端開發
/PHP
/PHP面向對象編程
當isset方法return true時會調用__get()方法,且用empty判斷時返回值都是1
2015-07-26
源自:PHP面向對象編程 5-5
正在回答
__get方法如果不返回值的話empty()就一直返回true,在empty()調用時會先調用__isset再調用__get,__isset返回false,empty()就與之相反取true而不會調用__get,__isset返回true,就會調用__get,當有返回值時相當于true,所以結果為false,這相當于一個或關系。empty(false|true) = true|false = true,empty(true|true)=false|false=false。
在第二張截圖中 ? getting the property classname ?這個值是從哪里來的啊?
class?MagicTest{ ???? ????public?function?__get($name){ ?????return?"Getting?the?property".$name."<br/>"; ????} ???? ????public?function?__set($name,$value){ ????????echo?"setting?the?property".$name."to?value".$value."<br/>"; ????} ????public?function?__isset($name){ ????????echo?"__isset?invoked<br/>"; ????????return?true; ????} ????public?function?__unset($name){ ????????echo?"unsetting?property".$name."<br/>"; ???????? ????}? } $obj=new?MagicTest(); echo?$obj->className."<br/>"; $obj->className="MagicClassX"."<br/>"; echo?'$obj->className?is?set?'.isset($obj->className)."<br/>"; echo?'$obj->className?is?empty?'.empty($obj->className)."<br/>"; unset($obj->className);
按照我的寫法 是正常顯示的啊 ? ?你在試試
舉報
從容應對面試官的知識寶典,帶你握面向對象的最重要的核心能力
1 回答__call(), __set(), __get() 這些重載方法,都在什么情況下使用?。?/p>
1 回答isset和empty區別
2 回答static關鍵字方法的調用
2 回答__call,__staticCall一種不存在的方法被調用時出現兩種結果
2 回答unset用echo為什么會報錯,而isset用不用echo都不會報錯???
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-14
__get方法如果不返回值的話empty()就一直返回true,在empty()調用時會先調用__isset再調用__get,__isset返回false,empty()就與之相反取true而不會調用__get,__isset返回true,就會調用__get,當有返回值時相當于true,所以結果為false,這相當于一個或關系。empty(false|true) = true|false = true,empty(true|true)=false|false=false。
2016-01-08
在第二張截圖中 ? getting the property classname ?這個值是從哪里來的啊?
按照我的寫法 是正常顯示的啊 ? ?你在試試