在php中,「__set()」方法在為目前環境下未定義或不可見的類別屬性賦值時,會自動呼叫;語法格式「public function __set($key, $value){ ...;}”,它接收兩個參數,一個表示屬性名字,一個表示屬性值。
本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦
在物件導向程式設計中,PHP 提供了一系列的魔術方法,這些魔術方法為程式設計提供了許多便利,在PHP 中的作用是非常重要的。 PHP 中的魔術方法通常以__(兩個底線)開始,不需要明確的呼叫而是在某種特定條件下自動呼叫的。
__set() 方法
在為目前環境下未定義或不可見的類別屬性賦值時,會自動呼叫 __set() 方法。定義此方法的語法格式如下:
public function __set($key, $value){ ... ... ; }
其中,參數 $key 是要操作的變數名稱,$value 為變數 $key 的值。
【範例】下面使用簡單的範例來示範一下 __set() 方法的使用。
<?php class Website{ public $name; private $url; public function __set($key, $value){ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; ?>
運行結果如下:
为“url”赋值“https://www.php.cn/”失败! 为“title”赋值“PHP教程”失败!
利用__set() 方法的特性,我們可以透過__set() 方法為類別中的使用private 關鍵字修飾的屬性進行賦值或修改。如下圖所示:
<?php class Website{ public $name; private $url = ''; public function __set($key, $value){ if(isset($this->$key)){ $this -> $key = $value; }else{ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } public function getUrl(){ echo $this -> url; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; $object -> getUrl(); ?>
運行結果如下:
为“title”赋值“PHP教程”失败! https://www.php.cn/
推薦學習:《PHP影片教學》
以上是php __set魔術方法怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!