Der Unterschied zwischen get und set in PHP: Die Methode „__get()“ wird verwendet, um den Wert des privaten Mitgliedsattributs abzurufen, und das zurückgegebene Ergebnis ist der erhaltene Attributwert, während die Methode „__set()“ zum Festlegen verwendet wird Das private Mitgliedsattribut Wert, diese Methode hat keinen Rückgabewert.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 7.1, DELL G3-Computer
Im Allgemeinen sind die Attribute einer Klasse immer definiert als privat. Dies entspricht eher der realistischen Logik. 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.
In PHP5 stehen uns spezielle Methoden zum Setzen und Erhalten von Werten für Attribute zur Verfügung, die beiden Methoden „__set()“ und „__get()“. Diese beiden Methoden existieren standardmäßig nicht, wir fügen sie jedoch manuell hinzu . In der Klasse existiert sie wie die Konstruktormethode (__construct()) nur, wenn sie in der Klasse hinzugefügt wird. Sie können sie natürlich auch entsprechend Ihren persönlichen Bedürfnissen hinzufügen Stil:
//__set()方法用来设置私有属性 public function __set($name,$value){ $this->$name = $value; } //__get()方法用来获取私有属性 public function __get($name){ return $this->$name; }
__get()-Methode: Diese Methode wird verwendet, um den privaten Mitgliedsattributwert 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 automatisch vom Objekt aufgerufen wird, wenn private Eigenschaften direkt abgerufen werden. 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 das Attribut, das Sie festlegen möchten, kein Rückgabewert. Diese Methode muss auch nicht manuell aufgerufen werden. Sie wird automatisch aufgerufen, wenn das gleiche private Attribut gekapselt wurde , 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 das Private direkt angeben, wenn eine Eigenschaft zugewiesen wird Wenn Sie einen Wert angeben, wird dieser automatisch aufgerufen, wobei die Eigenschaft, z. B. Name, an $property_name und der Wert „zhangsan“ übergeben wird, 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:
class Person { //下面是人的成员属性,都是封装的私有成员 private $name; //人的名子 private $sex; //人的性别 private $age; //人的年龄 //__get()方法用来获取私有属性 public function __get($property_name) { echo "在直接获取私有属性值的时候,自动调用了这个__get()方法<br>"; if (isset($this->$property_name)) { return ($this->$property_name); } else { return (NULL); } } //__set()方法用来设置私有属性 public function __set($property_name, $value) { echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值<br>"; $this->$property_name = $value; } } $p1 = new Person(); //直接为私有属性赋值的操作,会自动调用__set()方法进行赋值 $p1->name = "张三"; $p1->sex = "男"; $p1->age = 20; //直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值 echo "姓名:" . $p1->name . "<br>"; echo "性别:" . $p1->sex . "<br>"; echo "年龄:" . $p1->age . "<br>";
Beim direkten Festlegen des privaten Attributwerts wird diese __set()-Methode automatisch aufgerufen, um dem privaten Attribut einen Wert zuzuweisen.
Beim direkten Festlegen des privaten Attributwerts dies Die Methode __set() wird automatisch aufgerufen. Die Methode _set() weist privaten Attributen Werte zu
Beim direkten Festlegen des Werts eines privaten Attributs wird die Methode __set() automatisch aufgerufen, um einem privaten Attribut einen Wert zuzuweisen
Beim direkten Abrufen des Werts eines privaten Attributs wird diese Methode automatisch aufgerufen __get()Methode
Name: Zhang San
Beim direkten Abrufen des privaten Attributwerts wurde diese __get()-Methode automatisch aufgerufen
Geschlecht: Männlich
Beim direkten Abrufen des privaten Attributwerts wurde diese __get-Methode automatisch aufgerufen ()
Alter: 20
Wenn der obige Code die Methoden __get() und __set() nicht hinzufügt, macht das Programm einen Fehler, da private Mitglieder dies nicht können außerhalb der Klasse betrieben werden, und der obige Code wird automatisch aufgerufen. Die Methoden __get() und __set() helfen uns, direkt auf die gekapselten privaten Mitglieder zuzugreifen.
Empfohlenes Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen get und set in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!