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

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

為什么我的__set魔術方法不起作用?

代碼如下:
<?php

class?MagicTest{

????public?function?__tostring(){
????????return?"This?is?the?Class?MagicTest.?";
????}

????public?function?__invoke($x){
????????echo?"__invoke?called?with?parameter?".$x."\n";
????}

????//方法的重載
????//這個方法的參數第一個就是調用的方法的名稱,第二個參數是方法調用的參數組成的數組
????public?function?__call($name,$arguments){
????????echo?"Calling?"?.?$name?.?"with?parameters:?".
????????????implode(",",?$arguments)."\n";

????}

????//靜態方法的重載,注意這個方法需要設定為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

正在回答

2 回答

因為是echo而非return

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

?public?function?__set($name,?$value){

????????return?"Setting?the?property?".$name."to?value"?.?$value."\n";

????}

你返回的是一個$obj->className賦值,而不是直接在該__set魔術方法輸出

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

舉報

0/150
提交
取消

為什么我的__set魔術方法不起作用?

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

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

幫助反饋 APP下載

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

公眾號

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