首頁 >後端開發 >PHP問題 >php __set魔術方法怎麼用

php __set魔術方法怎麼用

青灯夜游
青灯夜游原創
2021-06-18 18:06:441736瀏覽

在php中,「__set()」方法在為目前環境下未定義或不可見的類別屬性賦值時,會自動呼叫;語法格式「public function __set($key, $value){ ...;}”,它接收兩個參數,一個表示屬性名字,一個表示屬性值。

php __set魔術方法怎麼用

本教學操作環境: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 &#39;为“&#39;.$key.&#39;”赋值“&#39;.$value.&#39;”失败!<br>&#39;;
        }
    }
    $object          = new Website();
    $object -> name  = &#39;php中文网&#39;;
    $object -> url   = &#39;https://www.php.cn/&#39;;
    $object -> title = &#39;PHP教程&#39;;
?>

運行結果如下:

为“url”赋值“https://www.php.cn/”失败!
为“title”赋值“PHP教程”失败!

利用__set() 方法的特性,我們可以透過__set() 方法為類別中的使用private 關鍵字修飾的屬性進行賦值或修改。如下圖所示:

<?php
    class Website{
        public $name;
        private $url = &#39;&#39;;
        public function __set($key, $value){
            if(isset($this->$key)){
                $this -> $key = $value;
            }else{
                echo &#39;为“&#39;.$key.&#39;”赋值“&#39;.$value.&#39;”失败!<br>&#39;;
            }
        }
        public function getUrl(){
            echo $this -> url;
        }
    }
    $object          = new Website();
    $object -> name  = &#39;php中文网&#39;;
    $object -> url   = &#39;https://www.php.cn/&#39;;
    $object -> title = &#39;PHP教程&#39;;
    $object -> getUrl();
?>

運行結果如下:

为“title”赋值“PHP教程”失败!
https://www.php.cn/

推薦學習:《PHP影片教學

以上是php __set魔術方法怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn