Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon d'appliquer le code du mécanisme de réflexion php

Explication détaillée de la façon d'appliquer le code du mécanisme de réflexion php

伊谢尔伦
伊谢尔伦original
2017-06-30 10:37:111030parcourir

Cet article présente principalement l'utilisation du mécanisme de réflexion PHP, qui est un concept important dans la programmation PHP. Les amis qui en ont besoin peuvent s'y référer

Cet article décrit l'utilisation du mécanisme de réflexion PHP avec des exemples et des partages. avec tout le monde. Pour la référence de chacun. La méthode spécifique est la suivante :

L'exemple de code de démonstration est le suivant :

<?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();
?>

Résultat de sortie :

En classe 1

est visible via la classe proxy ClassOneDelegator Pour remplacer la classe ClassOne pour implémenter ses méthodes.

De même, le code suivant peut également être exécuté :

<?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();
?>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn