Heim >Backend-Entwicklung >PHP-Problem >So verwenden Sie die magischen PHP-Methoden __get() und __set()

So verwenden Sie die magischen PHP-Methoden __get() und __set()

青灯夜游
青灯夜游Original
2021-07-06 17:57:291981Durchsuche

„__set()“ wird automatisch aufgerufen, wenn einem undefinierten Attribut ein Wert zugewiesen wird, die Syntax lautet „public function __set(key,value){}“; „__get()“ wird aufgerufen, wenn ein undefiniertes Attribut aufgerufen wird Die Syntax lautet „öffentliche Funktion __get(name){}“.

So verwenden Sie die magischen PHP-Methoden __get() und __set()

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Magische Methoden in PHP beginnen normalerweise mit __ (zwei Unterstriche) und müssen nicht explizit aufgerufen werden, sondern automatisch unter bestimmten Voraussetzungen aufgerufen.

1. __set()-Methode
Magische Methode Funktion
__set() Wird automatisch aufgerufen, wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird.
__get() Wird automatisch aufgerufen, wenn eine undefinierte Eigenschaft aufgerufen wird

Wenn Sie einem Klassenattribut einen Wert zuweisen, der in der aktuellen Umgebung nicht definiert oder unsichtbar ist, wird die __set()-Methode automatisch aufgerufen. Das Syntaxformat zum Definieren dieser Methode lautet wie folgt:

public function __set($key, $value){
    ... ... ;
}

Darunter ist der Parameter $key der Name der zu bedienenden Variablen und $value der Wert der Variablen $key.

【Beispiel】Im Folgenden wird anhand eines einfachen Beispiels die Verwendung der Methode __set() demonstriert.

<?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;;
?>

Die laufenden Ergebnisse lauten wie folgt:

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

Unter Verwendung der Eigenschaften der __set()-Methode können wir die __set()-Methode verwenden, um Eigenschaften in der Klasse zuzuweisen oder zu ändern, die mit dem privaten Schlüsselwort geändert werden. Wie unten gezeigt:

<?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();
?>

Die laufenden Ergebnisse sind wie folgt:

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

2. __get()-Methode

Beim Aufrufen oder Abrufen undefinierter oder unsichtbarer Klassenattribute in der aktuellen Umgebung wird die __get()-Methode automatisch aufgerufen . Das Syntaxformat zum Definieren dieser Methode lautet wie folgt:

public function __get($name){
    ... ... ;
}

Der Parameter $name ist der Name der zu bedienenden Variablen.

【Beispiel】Im Folgenden wird anhand eines einfachen Beispiels die Verwendung der Methode __get() demonstriert.

<?php
    class Website{
        public $url = &#39;https://www.php.cn/&#39;;
        private $name = &#39;php中文网&#39;;
        public function __get($name){
            echo &#39;获取:“&#39;.$name.&#39;”失败!&#39;;
        }
    }
    $object = new Website();
    echo $object -> url.&#39;<br>&#39;;
    echo $object -> name.&#39;<br>&#39;;
    echo $object -> title.&#39;<br>&#39;;
?>

Die laufenden Ergebnisse sind wie folgt:

https://www.php.cn/
获取:“name”失败!
获取:“title”失败!

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die magischen PHP-Methoden __get() und __set(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn