Heim >Backend-Entwicklung >PHP-Tutorial >Beispiele für die Verwendung des PHP-Reflektionsmechanismus

Beispiele für die Verwendung des PHP-Reflektionsmechanismus

高洛峰
高洛峰Original
2016-12-23 12:53:06872Durchsuche

Die Beispiele in diesem Artikel beschreiben die Verwendung des PHP-Reflexionsmechanismus und werden Ihnen als Referenz zur Verfügung gestellt. 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.

In ähnlicher Weise 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();
?>

Ich hoffe, dass dieser Artikel für das PHP-Programmierdesign aller hilfreich sein wird.

Weitere Artikel zu Beispielen für die Verwendung des PHP-Reflektionsmechanismus finden Sie auf der chinesischen PHP-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