Maison > développement back-end > tutoriel php > 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

伊谢尔伦
Libérer: 2023-03-12 07:30:02
original
1058 Les gens l'ont consulté

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();
?>
Copier après la connexion

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();
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal