亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

當isset方法return true時會調用__get()方法,且用empty判斷時返回值都是1

當isset方法return true時會調用__get()方法,且用empty判斷時返回值都是155b455c30001909505000291.jpg


55b455c300012d0304570232.jpg

55b455c30001af9905000272.jpg

55b455c400018dc504860200.jpg


正在回答

2 回答

__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。

0 回復 有任何疑惑可以回復我~

在第二張截圖中 ? 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);

按照我的寫法 是正常顯示的啊 ? ?你在試試

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

當isset方法return true時會調用__get()方法,且用empty判斷時返回值都是1

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號