php筆記(10) 物件導向之魔術方法

2021-07-12 04:31:41 字數 2166 閱讀 5261

當物件被當作字串輸出時,呼叫該方法。

class

people

}$p1 = new people();

echo

$p1;

當物件被當作方法呼叫時,會呼叫該方法

class

people

}$p1 = new people();

$p1(1);

當訪問物件的方法不存在時,將會呼叫該方法

class

people

}$p1 = new people();

$p1->hehe('2','1');

當訪問類靜態方法不存在時,呼叫該方法

class

people

}people::hehe('1','2');

當訪問的屬性不能正常訪問時(沒有該屬性或者是private屬性),呼叫該方法

class

people

}$obj = new people();

echo

$obj->name;

當要賦值的屬性不能正常訪問時(沒有該屬性或者是private屬性),呼叫該方法

class

people

}$obj = new people();

$obj->name = '11';

當不可訪問屬性呼叫isset()和empty()方法時,將會呼叫。

class

people

}$obj = new people();

isset($obj->name);

class

people

}$obj = new people();

empty($obj->name);

當不可訪問屬性呼叫unset()方法時,將會呼叫。

class

people

}$obj = new people();

unset($obj->name);

如下的**,如果直接使用賦值符號,那麼兩個變數p1和p2其實是指向同乙個物件,如果修改p2,那麼p1也會被修改

我們可以使用clone關鍵字,複製乙個物件(記憶體中重新開闢乙個空間)

class

people

$p1 = new people();

$p1->name = "name1";

$p2 = clone

$p1;

$p2->name = "name2";

echo

"p1's name:".$p1->name.'

';echo

"p2's name:".$p2->name;

在使用clone的時候,就會呼叫__clone()方法

class

people

}$p1 = new people();

$p1->name = "name1";

$p2 = clone

$p1;

echo

"p1's name:".$p1->name.'

';echo

"p2's name:".$p2->name;

php 物件導向之 魔術方法

php 魔術方法 php 模式方法 描述 需要在類中定義魔術方法 construct destruct tostring 當物件被當作string使用時,這個方法會被自動呼叫。如 public function tostring echo myobj invoke 當物件被當成方法是,這個方法會自動...

php物件導向筆記5 魔術方法

construct destruct call callstatic get set isset unset sleep wakeup tostring invoke set state 和 clone class people static function getin public functi...

PHP物件導向 魔術方法

get name 觸發時機 當呼叫乙個不訪問的成員屬性的時候,會自動觸發,可以利用這個方法來完成對不可呼叫的屬性進行呼叫,但是不能設定值 set name,value 觸發時機 當給乙個不可訪問的成員屬性賦值的時候,會自動觸發這個方法,可以利用這個方法完成對不可以訪問的屬性進行賦值 isset na...