Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich die PHP-Methode __set()?

Wie verwende ich die PHP-Methode __set()?

青灯夜游
青灯夜游Original
2020-11-05 12:13:203337Durchsuche

In PHP kann die Methode __set() verwendet werden, um Werte für private Mitgliedseigenschaften festzulegen. Sie wird ausgelöst, wenn einer undefinierten Eigenschaft ein Wert zugewiesen wird; das Syntaxformat ist „__set($property, $value)“. , das über zwei Parameter verfügt: Der erste Parameter gibt den Attributnamen an und der zweite Parameter ist der für das Attribut festzulegende Wert. Es gibt keinen Rückgabewert.

Wie verwende ich die PHP-Methode __set()?

Empfohlen: „PHP-Video-Tutorial

Im Allgemeinen sollten Sie die Attribute einer Klasse immer als privat definieren, 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. Die Methode

  • __set() wird zum Festlegen privater Eigenschaftswerte verwendet. Die Methode

  • __get() wird verwendet, um private Attributwerte abzurufen.

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 existieren nicht standardmäßig, sondern wir manuell Wie die Konstruktormethode (__construct()) ist sie nur dann vorhanden, wenn sie der Klasse hinzugefügt wird. Sie können diese beiden Methoden natürlich auch entsprechend Ihren Anforderungen 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 Wert des privaten Mitgliedsattributs abzurufen. Sie verfügt über einen Parameter. Der Parameter wird im Namen des Mitgliedsattributs übergeben, das Sie erhalten möchten, und der erhaltene Attributwert wird zurückgegeben 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( $property, $value ) Methode: Diese Methode wird zum Festlegen von Werten für private Mitgliedseigenschaften verwendet. Der erste Parameter ist der Name der Eigenschaft, für die Sie den Wert festlegen möchten Der zweite Parameter ist der Wert, den Sie festlegen möchten. Der von der Eigenschaft festgelegte Wert hat keinen Rückgabewert. Diese Methode muss auch nicht manuell aufgerufen werden. Sie wird automatisch aufgerufen, wenn der private Attributwert nicht gekapselt ist 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, wenn Sie privaten Eigenschaften direkt Werte zuweisen, Es wird automatisch aufgerufen, wobei Attribute wie Name an $property_name und der Wert „zhangsan“ übergeben werden, der $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:

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

Ergebnis der Programmausführung:

在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个__get()方法
姓名:张三
在直接获取私有属性值的时候,自动调用了这个__get()方法
性别:男
在直接获取私有属性值的时候,自动调用了这个__get()方法
年龄:20

Wenn der obige Code die Methoden __get() und __set() nicht hinzufügt, weist das Programm einen Fehler auf, da private Mitglieder nicht außerhalb der Klasse betrieben werden können und das oben Genannte Code ist Durch den automatischen Aufruf der Methoden __get() und __set() können wir direkt auf die gekapselten privaten Mitglieder zugreifen.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !

Das obige ist der detaillierte Inhalt vonWie verwende ich die PHP-Methode __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