Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode-Zusammenfassung für die PHP-Magic-Methode-Anwendung

Beispielcode-Zusammenfassung für die PHP-Magic-Methode-Anwendung

伊谢尔伦
伊谢尔伦Original
2017-06-29 13:34:391391Durchsuche

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);
Über die

Konstruktfunktion

: Ab PHP 5.3.3 wird eine Methode, die mit dem Klassennamen in einer Klasse benannt ist, die in einem bestimmten

Namespace 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(&#39; &#39;, $arguments). "<br>";
  }

  public static function callStatic($name, $arguments)
  {
    // Note: value of $name is case sensitive.
    echo "Calling static method &#39;$name&#39; "
       . implode(&#39; &#39;, $arguments). "<br>";
  }
}

$obj = new MethodTest;
$obj->runTest(&#39;in&#39;,&#39;object&#39;,&#39;context&#39;);
MethodTest::runTest(&#39;in&#39;,&#39;static&#39;,&#39;context&#39;);
Aufruf der Objektmethode „runTest“ im Objektkontext

Aufruf der statischen Methode „runTest“ im statischen Kontext

Achten Sie auch auf den Umfang der Funktion protected und private:

3.get() und set()
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 nicht
class 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";
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;
Name: abc, Alter: 12

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!

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