為什么我的__set魔術方法不起作用?
<?php class?MagicTest{ ????public?function?__tostring(){ ????????return?"This?is?the?Class?MagicTest.?"; ????} ????public?function?__invoke($x){ ????????echo?"__invoke?called?with?parameter?".$x."\n"; ????} ????//方法的重載 ????//這個方法的參數(shù)第一個就是調用的方法的名稱,第二個參數(shù)是方法調用的參數(shù)組成的數(shù)組 ????public?function?__call($name,$arguments){ ????????echo?"Calling?"?.?$name?.?"with?parameters:?". ????????????implode(",",?$arguments)."\n"; ????} ????//靜態(tài)方法的重載,注意這個方法需要設定為static ????public?static?function?__callStatic($name,$arguments){ ????????echo?"Static?Calling?"?.?$name?.?"with?parameters:?". ????????????implode(",",?$arguments)."\n"; ????} ????public?function?__get($name){ ????????return?"Getting?the?property?".$name."\n"; ????} ????public?function?__set($name,?$value){ ????????return?"Setting?the?property?".$name."to?value"?.?$value."\n"; ????} } $obj?=?new?MagicTest(); echo?$obj->className."\n";?//className未定義,但是通過魔術方法__get,這個方法好像被定義了一樣 $obj->className='MagicClassX'; ?>
為啥我的__set魔術方法不起作用,只output
Getting the property className 然后直接跟著MagicClassX
2017-03-29
因為是echo而非return
2015-09-30
?public?function?__set($name,?$value){
????????return?"Setting?the?property?".$name."to?value"?.?$value."\n";
????}
你返回的是一個$obj->className賦值,而不是直接在該__set魔術方法輸出