Nutzungsanalyse von __get() und __set in PHP

小云云
Freigeben: 2023-03-22 14:54:01
Original
1428 Leute haben es durchsucht

In PHP5 stehen uns spezielle Methoden zum Festlegen und Abrufen von Werten für Attribute zur Verfügung, die beiden Methoden „__set()“ und „__get()“. Diese beiden Methoden sind standardmäßig nicht vorhanden, aber wir haben sie manuell hinzugefügt Zur Klasse existiert sie wie die Konstruktormethode (__construct()) nur, wenn sie der Klasse hinzugefügt wird. Sie können diese beiden Methoden natürlich auch entsprechend Ihrem persönlichen Stil hinzufügen :

//__set()方法用来设置私有属性
    public function __set($name,$value){       
     $this->$name = $value;    }   
      //__get()方法用来获取私有属性   
       public function __get($name)
       {        return $this->$name;    }
Nach dem Login kopieren

__get()-Methode: Diese Methode wird verwendet, um den Wert des privaten Mitgliedsattributs abzurufen. Der Parameter wird im Namen des Mitgliedsattributs übergeben, das Sie erhalten möchten , und der erhaltene Attributwert wird zurückgegeben. Wir rufen sie nicht manuell auf, da wir diese Methode auch zu einer privaten Methode machen können, die vom Objekt automatisch aufgerufen wird, wenn die private Eigenschaft direkt abgerufen wird. Da die private Eigenschaft gekapselt wurde, kann der Wert nicht direkt abgerufen werden. Wenn Sie diese Methode jedoch zur Klasse hinzufügen, erhalten Sie den Wert automatisch direkt, wenn Sie eine Anweisung wie „echo$p1->name“ verwenden Führen Sie die Methode __get($name) aus und übergeben Sie den Attributnamen an den Parameter $name. Durch die interne Ausführung dieser Methode wird der Wert des von uns übergebenen privaten Attributs zurückgegeben. Wenn die Mitgliedseigenschaften nicht als privat gekapselt sind, ruft das Objekt selbst diese Methode nicht automatisch auf.

__set()-Methode: Diese Methode wird zum Festlegen von Werten für private Mitgliedsattribute verwendet. Der erste Parameter ist der Name des Attributs, für das Sie den Wert festlegen möchten. und der zweite Parameter ist der für die Eigenschaft festzulegende Wert. Es gibt keinen Rückgabewert. Diese Methode muss auch nicht manuell aufgerufen werden. Sie wird automatisch aufgerufen, wenn der private Attributwert mit

gekapselt wird () Diese Methode ist nicht zulässig, zum Beispiel: $this->name='zhangsan', dies führt zu einem Fehler, aber wenn Sie der Klasse die Methode __set($property_name, $value) hinzufügen, können Sie dies direkt tun Wann Wenn Sie einem privaten Attribut einen Wert zuweisen, wird dieser automatisch aufgerufen, wobei das Attribut, z. B. Name, an $property_name übergeben wird und der Wert „zhangsan“ übergeben wird, der an $value zugewiesen werden soll. Durch die Ausführung dieser Methode besteht der Zweck der Zuweisung darin erreicht. Wenn die Mitgliedseigenschaften nicht als privat gekapselt sind, ruft das Objekt selbst diese Methode nicht automatisch auf. Um keine unzulässigen Werte zu übergeben, können Sie in dieser Methode auch ein Urteil fällen. Der Code lautet wie folgt:

<?php
class Person
{
//下面是人的成员属性,都是封装的私有成员
private $name;      //人的名子
private $sex;       //人的性别
private $age;       //人的年龄
//__get()方法用来获取私有属性
private function __get($property_name)
{
echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>";
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>";
$this->$property_name = $value;
}
}
$p1=newPerson();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值
echo "姓名:".$p1->name."<br>";
echo "性别:".$p1->sex."<br>";
echo "年龄:".$p1->age."<br>";
?>
程序
Nach dem Login kopieren

Ausführungsergebnis:

Beim direkten Festlegen des Werts eines privaten Attributs wird automatisch die Methode __set() aufgerufen, um diesem einen Wert zuzuweisen das private Attribut
Beim direkten Festlegen des Werts eines privaten Attributs wird die Methode __set() automatisch aufgerufen, um dem privaten Attribut einen Wert zuzuweisen
Beim direkten Festlegen des Werts eines privaten Attributs wird die Methode __set() automatisch aufgerufen wird automatisch aufgerufen, um dem privaten Attribut einen Wert zuzuweisen
Beim direkten Abrufen des privaten Attributwerts wird diese __get()-Methode automatisch aufgerufen
Name: Zhang San
Beim direkten Abrufen des privaten Attributwerts wird dieses __get ()-Methode wird automatisch aufgerufen
Geschlecht: Männlich
wird automatisch die __get()-Methode aufgerufen, wenn der private Attributwert direkt abgerufen wird
Alter: 20

Wenn der obige Code das __get nicht hinzufügt () und __set()-Methoden führt das Programm zu Fehlern, da private Mitglieder nicht außerhalb der Klasse betrieben werden können und der obige Code uns hilft, direkt auf die gekapselten privaten Mitglieder zuzugreifen, indem die Methoden __get() und __set() automatisch aufgerufen werden.

Verwandte Empfehlungen:

PHP-Zaubermethoden __get(), __set(), __call(), __callStatic() und detaillierte Erklärung der statischen Verwendung

Detaillierte Erläuterung der Beispiele für die magische Methode __get() (PHP-Tutorial für fortgeschrittene Objekte 2)

Detaillierte Erläuterung der Anwendungsbeispiele von __get() und __set() im PHP_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonNutzungsanalyse von __get() und __set in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!