Dieser Artikel stellt hauptsächlich eine kurze Zusammenfassung der Magic-Methode (Magic-Methode) in PHP-Klassen vor. Zu diesen Methoden gehören construction(), destruct(), call(), callStatic(), get(). , set(), toString() usw. Freunde, die es benötigen, können beim Erstellen der Instanz auf
1 zurückgreifen /destroyed Beim Aufruf können null oder mehr Parameter übergeben werden.
Hinweis: Die Destruktormethode wird aufgerufen, sobald keine anderen Verweise auf ein bestimmtes Objekt vorhanden sind, oder in beliebiger Reihenfolge während der Abschaltsequenz.
class A { function A() { echo "build A"; } function destruct() { echo "destroy A"; } } $obj = new A(); //unset($obj);
Konstruktfunktion
: Ab PHP 5.3.3 wird eine Methode, die mit dem Klassennamen in einer Klasse benannt ist, die in einem bestimmtenNamespace definiert ist, nicht mehr als Konstruktor betrachtet. In einer Klasse ohne Namespace handelt es sich weiterhin um einen Konstruktor wie zuvor. Zum Beispiel: Wenn kein Namespace Foo vorhanden ist, wird auch Bar() als Konstruktor verwendet. Wenn außerdem die folgende Situation vorliegt:
namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method as of PHP 5.3.3 } }
enthält sowohl construction() als auch eine Funktion mit demselben Namen wie der Klassenname, dann wird nur construction() aufgerufen.
function construct() { echo "construct A"; } function A() { echo "build A"; } function destruct() { echo "destroy A"; } }
2. call() und callStatic()
Wird aufgerufen, wenn versucht wird, eine Methode aufzurufen, die nicht existiert. Zwei Parameter, einer ist der Methodenname und der andere ist der Parameter array
der aufgerufenen Methode.Unter diesen wird $arguments als Array übergeben. Ausführungsergebnisse:
class MethodTest { public function call($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling object method '$name' " . implode(' ', $arguments). "<br>"; } public static function callStatic($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling static method '$name' " . implode(' ', $arguments). "<br>"; } } $obj = new MethodTest; $obj->runTest('in','object','context'); MethodTest::runTest('in','static','context');
Aufruf der statischen Methode „runTest“ im statischen Kontext
Achten Sie auch auf den Umfang der Funktion protected und private:
class TestMagicCallMethod { public function foo() { echo METHOD.PHP_EOL."<br>"; } public function call($method, $args) { echo METHOD.PHP_EOL."<br>"; if(method_exists($this, $method)) { $this->$method(); } } protected function bar() { echo METHOD.PHP_EOL."<br>"; } private function baz() { echo METHOD.PHP_EOL."<br>"; } } $test = new TestMagicCallMethod(); $test->foo(); /** * Outputs: * TestMagicCallMethod::foo */ $test->bar(); /** * Outputs: * TestMagicCallMethod::call * TestMagicCallMethod::bar */ $test->baz(); /** * Outputs: * TestMagicCallMethod::call * TestMagicCallMethod::baz */
werden aufgerufen, wenn versucht wird, eine Eigenschaft zu lesen, die in einem Objekt nicht vorhanden ist.
Hinweis: Wir können diese Funktion verwenden, um verschiedene Operationen ähnlich der Reflexion in Java zu implementieren.Ausgabe:
Name existiert nichtclass Test { public function get($key) { echo $key . " not exists"; } public function set($key,$value) { echo $key . " = ".$value; } } $t = new Test(); echo $t->name."<br>"; $t->name = "abc";
4. toString()
Diese Methode ist ähnlich Die toString()-Methode von Java ruft diese Funktion auf, wenn wir das Objekt direkt drucken. Die Funktion muss einen String zurückgeben.
Ausgabe:
class Test { private $name = "abc"; private $age = 12; public function toString() { return "name : $this->name, age : $this->age"; } } $t = new Test(); echo $t;
Das obige ist der detaillierte Inhalt vonBeispielcode-Zusammenfassung für die PHP-Magic-Methode-Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!