Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist die Verwendung der __get-Methode in PHP?

Was ist die Verwendung der __get-Methode in PHP?

王林
王林Original
2020-11-04 09:19:594314Durchsuche

Die Rolle der __get-Methode in PHP: Wird zum Abrufen privater Mitgliedsattributwerte verwendet. Die __get-Methode muss nicht manuell aufgerufen werden, daher können wir diese Methode zu einer privaten Methode machen, die vom Objekt automatisch aufgerufen wird, wenn private Eigenschaften abgerufen werden.

Was ist die Verwendung der __get-Methode in PHP?

Definieren Sie im Allgemeinen die Attribute einer Klasse immer als privat, 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.

(Empfohlenes Tutorial: php-Video-Tutorial)

In PHP5 stellen wir uns spezielle Methoden zum Festlegen von Werten und Abrufen von Werten für Attribute zur Verfügung, „__set()“ und „__get()“. Diese beiden Methoden sind standardmäßig nicht vorhanden, aber wir fügen sie der Klasse manuell hinzu. Wie die Konstruktormethode (__construct()) ist sie nur vorhanden, wenn sie der Klasse hinzugefügt wird Sie können es natürlich wie folgt hinzufügen:

//__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. Der Parameter wird im Namen des übergeben Das Mitgliedsattribut, das Sie abrufen möchten, und der erhaltene Attributwert werden zurückgegeben. Diese Methode muss nicht manuell aufgerufen werden, daher können wir diese Methode auch zu einer privaten Methode machen, die automatisch vom Objekt aufgerufen wird, wenn das private Attribut direkt ist erhalten.

Da die privaten Eigenschaften gekapselt wurden, kann der Wert nicht direkt abgerufen werden. Wenn Sie diese Methode jedoch zur Klasse hinzufügen, können Sie den Wert direkt mithilfe einer Anweisung wie „echo$p1->name“ abrufen. Die Methode __get($name) wird automatisch aufgerufen und übergibt 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 Sie möchten für das Attribut festlegen. Es gibt keinen Rückgabewert. Diese Methode muss auch nicht manuell aufgerufen werden. Sie kann auch privat gemacht werden und wird automatisch aufgerufen, wenn der private Attributwert direkt festgelegt wird.

Die gleichen privaten Attribute wurden gekapselt. Wenn es keine __set()-Methode gibt, ist dies nicht zulässig. Beispiel: $this->name= ' zhangsan ', führt dies zu einem Fehler, aber wenn Sie es hinzufügen Die Methode __set($property_name, $value) der Klasse wird automatisch aufgerufen, wenn einer privaten Eigenschaft ein Attribut wie der Name zugewiesen wird, und übergeben Sie den Wert „zhangsan“, 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 = new Person();
// 直接为私有属性赋值的操作,会自动调用 __set() 方法进行赋值
$ p1 ->name= " 张三 " ;
$ p1 ->sex= " 男 " ;
$ p1 ->age= 20 ;
// 直接获取私有属性的值,会自动调用 __get() 方法,返回成员属性的值
echo  " 姓名: " . $ p1 ->name. "<br>" ;
echo  " 性别: " . $ p1 ->sex. "<br>" ;
echo  " 年龄: " . $ p1 ->age. "<br>" ;
?>

Ausführungsergebnis:

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

Wenn der obige Code die Methoden __get() und __set() nicht hinzufügt, tritt im Programm ein Fehler auf, da private Mitglieder nicht außerhalb der Klasse betrieben werden können und die obiger Code Es hilft uns, direkt auf die gekapselten privaten Mitglieder zuzugreifen, indem die Methoden __get() und __set() automatisch aufgerufen werden.

Verwandte Empfehlungen: php-Training

Das obige ist der detaillierte Inhalt vonWas ist die Verwendung der __get-Methode 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