Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie _get(),_set() in PHP

So verwenden Sie _get(),_set() in PHP

不言
不言Original
2018-07-20 16:36:471554Durchsuche

Wie verwende ich PHP objektorientiert _get(), _set()? Die Methode __set() legt den Wert für das Attribut fest und die Methode __get() ruft den Wert für das Attribut ab. Beide Methoden müssen manuell zum Programm hinzugefügt werden. Schauen wir uns als Nächstes die Verwendung dieser Methoden genauer an zwei Methoden.

Im Allgemeinen werden Klassenattribute immer als privat definiert, was eher einer realistischen Logik entspricht. Lese- und Zuweisungsoperationen zu Attributen kommen jedoch sehr häufig vor, daher sind in PHP5 zwei Funktionen „__get()“ und „__set()“ vordefiniert, um Attribute abzurufen und zuzuweisen. Es ähnelt der Operation von Javabean in Java, und die verwendete Methode ist ähnlich, mit der Ausnahme, dass nicht wie in Javabean Set- und Get-Operationen für jedes Feld ausgeführt werden müssen. Fügen Sie einfach zwei magische Methoden hinzu. Das heißt, die Vorgänge zum Festlegen und Abrufen von Werten privater Mitglieder. PHP5 stellt 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, wir fügen sie jedoch manuell zur Klasse hinzu geht hinein, wie die Konstruktormethode (__construct()), sie existiert nur, wenn sie innerhalb der Klasse hinzugefügt wird. Sie können diese beiden Methoden natürlich auch entsprechend Ihrem persönlichen Stil hinzufügen.

1 //__set()方法用来设置私有属性 
2 public function __set($name,$value){ 
3 $this->$name = $value; 
4 } 
5 //__get()方法用来获取私有属性 
6 public function __get($name){ 
7 return $this->$name; 
8 }

__get()-Methode: Diese Methode wird verwendet, um den Wert des privaten Mitgliedsattributs abzurufen. Sie verfügt über einen Parameter, der im Namen des abzurufenden Mitgliedsattributs und des erhaltenen Attributwerts übergeben wird Diese Methode muss nicht manuell aufgerufen werden, da wir diese Methode auch in eine private Methode umwandeln 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. Sie verfügt über zwei Parameter. Der erste Parameter ist der Name des Attributs, für das Sie den Wert festlegen möchten Parameter ist das Attribut, das Sie festlegen möchten, kein Rückgabewert. Diese Methode muss auch nicht manuell aufgerufen werden. Sie wird automatisch aufgerufen, wenn der private Attributwert gekapselt 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 die private Eigenschaft direkt festlegen Beim Zuweisen Ein Wert wird automatisch aufgerufen, wobei das Attribut wie der Name an $property_name und der Wert „zhangsan“ übergeben werden, der an $value zugewiesen werden soll. Durch die Ausführung dieser Methode wird der Zweck der Zuweisung 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:

 1 <?php 
 2 class Person 
 3 { 
 4 //下面是人的成员属性,都是封装的私有成员 
 5 private $name; //人的名子 
 6 private $sex; //人的性别 
 7 private $age; //人的年龄 
 8 //__get()方法用来获取私有属性 
 9 private function __get($property_name) 
10 { 
11 echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>"; 
12 if(isset($this->$property_name)) 
13 { 
14 return($this->$property_name); 
15 } 
16 else 
17 { 
18 return(NULL); 
19 } 
20 } 
21 //__set()方法用来设置私有属性 
22 private function __set($property_name, $value) 
23 { 
24 echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>"; 
25 $this->$property_name = $value; 
26 } 
27 } 
28 $p1=newPerson(); 
29 //直接为私有属性赋值的操作,会自动调用__set()方法进行赋值 
30 $p1->name="张三"; 
31 $p1->sex="男"; 
32 $p1->age=20; 
33 //直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值 
34 echo "姓名:".$p1->name."<br>"; 
35 echo "性别:".$p1->sex."<br>"; 
36 echo "年龄:".$p1->age."<br>"; 
37 ?>

Ergebnis der Programmausführung:

Beim direkten Festlegen des privaten Attributwerts wird die Methode __set() automatisch aufgerufen, um den privaten Attributwert zuzuweisen
Beim direkten Festlegen des privaten Attributwert, ruft automatisch diese __set()-Methode auf, um privaten Attributen Werte zuzuweisen
Wenn Sie den Wert eines privaten Attributs direkt festlegen, rufen Sie automatisch diese __set()-Methode auf, um einem privaten Attribut einen Wert zuzuweisen
Wann Wenn der Wert eines privaten Attributs direkt abgerufen wird, wird die Methode __get() automatisch aufgerufen
Name: Zhang San
Wenn der Wert eines privaten Attributs direkt abgerufen wird, wird die Methode __get() automatisch aufgerufen
Geschlecht: Männlich
Wenn der private Attributwert direkt abgerufen wird. Beim Hinzufügen eines privaten Attributwerts wird die Methode __get() automatisch aufgerufen
Alter: 20
Wenn der obige Code __get() und __set() nicht hinzufügt Methoden führt das Programm zu Fehlern, da es nicht in der Klasse verwendet werden kann Externer Betrieb privater Mitglieder, und der obige Code hilft uns, direkt auf die gekapselten privaten Mitglieder zuzugreifen, indem er automatisch die Methoden __get() und __set() aufruft.

Verwandte Empfehlungen:

Über PHPs _set() und _get()

Das obige ist der detaillierte Inhalt vonSo verwenden Sie _get(),_set() in PHP. 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