PHP-objektorientierte Verwendung von _get(), _set() Definieren Sie im Allgemeinen immer die Attribute einer Klasse als privat, was einer realistischeren Logik entspricht. Lese- und Zuweisungsvorgänge 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 Inside hinzu Wie die Konstruktormethode (__construct()) existiert sie nur, wenn sie innerhalb der Klasse hinzugefügt wird. Sie können diese beiden Methoden wie folgt hinzufügen, und natürlich können Sie sie auch entsprechend Ihrem persönlichen Stil hinzufügen: Code kopierenDer Code lautet wie folgt:
//__set()-Methode wird zum Festlegen privater Eigenschaften verwendet
public function __set($name, $value){
$this->$name = $value}
//__get() Methode wird verwendet, um private Eigenschaften zu erhalten
public function; __get($name){
return $this->$name
}
__get() Methode: Diese Methode wird verwendet, um den Wert des privaten Mitgliedsattributs abzurufen Es gibt einen Parameter, der übergeben werden soll. Der Name des erhaltenen Mitgliedsattributs gibt den erhaltenen Attributwert zurück. Wir müssen diese Methode nicht manuell aufrufen, da wir diese Methode auch zu einer privaten Methode machen können Wird vom Objekt automatisch aufgerufen, wenn das private Attribut 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 gekapselt wird Ohne die Methode __set() ist dies nicht zulässig, zum Beispiel: $this->name='zhangsan'. Dies führt zu einem Fehler. Wenn Sie der Klasse jedoch beim direkten Zuweisen die Methode __set($property_name, $value) hinzufügen Wenn Sie einem privaten Attribut einen Wert zuweisen, wird es 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 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:
Kopieren Sie den Code
Der Code lautet wie folgt: Klasse Person
{
//Das Folgende sind die Mitgliedsattribute einer Person, die alle gekapselte private Mitglieder sind
private $name; //Der Name der Person
private $sex; Das Geschlecht der Person
private $age ; //Alter einer Person
//__get() Methode wird verwendet, um private Eigenschaften zu erhalten
private function __get($property_name)
{
echo " wird automatisch aufgerufen, wenn der private Eigenschaftswert direkt abgerufen wird. Got this __get() method
";
if(isset($this->$property_name))
{
return($this-> ;$property_name);
}
else
{
return(NULL);
}
//__set() Methode wird verwendet, um private Eigenschaften festzulegen
private function __set($property_name, $ value)
{
echo „Beim direkten Festlegen des Werts einer privaten Eigenschaft wird diese __set()-Methode automatisch aufgerufen, um der privaten Eigenschaft einen Wert zuzuweisen
“ ;
$this->$property_name = $value; ()-Methode wird automatisch für die Zuweisung aufgerufen
$p1- >name="Zhang San"
$p1->sex="Male";
//Den Wert des privaten Attributs direkt abrufen, die Methode __get() wird automatisch aufgerufen und gibt den Wert des Mitgliedsattributs zurück
echo „Name:“.$p1->name.“
echo "Geschlecht:".$p1->sex. "
";
echo "Alter:".$p1->age."
";
?>
Ergebnis der Programmausführung:
Beim direkten Festlegen des Werts eines privaten Attributs wird die Methode __set() automatisch aufgerufen, um dem privaten Attribut einen Wert zuzuweisen Attribut
Beim direkten Festlegen des Werts eines privaten Attributs wird diese __set()-Methode automatisch aufgerufen, um dem privaten Attribut einen Wert zuzuweisen
Beim direkten Festlegen des Werts eines privaten Attributs wird diese Methode automatisch aufgerufen. Die Methode __set() weist privaten Attributen Werte zu.
Beim direkten Abrufen des privaten Attributwerts wird die Methode __get() automatisch aufgerufen
Name: Zhang San
Beim direkten Abrufen des privaten Attributwerts wird die Methode __get() automatisch aufgerufen
Geschlecht: Männlich
Wenn der private Attributwert direkt abgerufen wird, wird die Methode __get() automatisch aufgerufen
Alter: 20
Wenn der obige Code die Methoden __get() und __set() nicht hinzufügt, gibt das Programm einen Fehler aus, da private Mitglieder nicht außerhalb der Klasse betrieben werden können, und der obige Code hilft uns, direkt auf die gekapselten privaten Mitglieder zuzugreifen, indem er automatisch die Methoden __get() und aufruft __set()-Methoden.
Dieser Artikel wurde reproduziert von: http://www.jb51.net/article/37900.htm
Das Obige stellt die detaillierten Verwendungsbeispiele von __get und __set in PHP vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.