Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode für die Verwendung des PHP-Reflektionsmechanismus

Beispielcode für die Verwendung des PHP-Reflektionsmechanismus

怪我咯
怪我咯Original
2017-07-12 16:21:481032Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung des PHP-Reflexionsmechanismus vorgestellt, ein wichtiges Konzept in der PHP-Programmierung. Freunde, die es benötigen, können sich darauf beziehen.

Dieser Artikel beschreibt die Verwendung des PHP-Reflexionsmechanismus anhand von Beispielen und Freigaben es mit allen. Als Referenz für alle. Die spezifische Methode lautet wie folgt:

Der Demonstrationsbeispielcode lautet wie folgt:

<?php
class ClassOne {
  function callClassOne() {
    print "In Class One";
  }
}
class ClassOneDelegator {
  private $targets;
  function construct() {
    $this->target[] = new ClassOne();
  }
  function call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new ReflectionClass($obj);
      if ($method = $r->getMethod($name)) {
        if ($method->isPublic() && !$method->isAbstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new ClassOneDelegator();
$obj->callClassOne();
?>

Ausgabeergebnis:

In Klasse Eins

ist sichtbar durch die Proxy-Klasse ClassOneDelegator Um die ClassOne-Klasse zu ersetzen, um ihre Methoden zu implementieren.

Ähnlich kann auch der folgende Code ausgeführt werden:

<?php
class ClassOne {
  function callClassOne() {
    print "In Class One";
  }
}
class ClassOneDelegator {
  private $targets;
  function addObject($obj) {
    $this->target[] = $obj;
  }
  function call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new ReflectionClass($obj);
      if ($method = $r->getMethod($name)) {
        if ($method->isPublic() && !$method->isAbstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new ClassOneDelegator();
$obj->addObject(new ClassOne());
$obj->callClassOne();
?>

Das obige ist der detaillierte Inhalt vonBeispielcode für die Verwendung des PHP-Reflektionsmechanismus. 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