Heim  >  Artikel  >  Backend-Entwicklung  >  Erklärung des PHP-Reflektionsmechanismus

Erklärung des PHP-Reflektionsmechanismus

小云云
小云云Original
2018-03-14 09:54:591571Durchsuche

PHP 5 verfügt über eine vollständige Reflexions-API und bietet die Möglichkeit, Klassen, Schnittstellen, Funktionen, Methoden und Erweiterungen zurückzuentwickeln. Darüber hinaus stellt die Reflection-API Methoden zum Extrahieren von Dokumentationskommentaren aus Funktionen, Klassen und Methoden bereit.

Die Verwendung von Reflection im tp-Framework:

  • ReflectionClass::__construct – Konstruieren Sie eine ReflectionClass-Klasse

public ReflectionClass::__construct ( mixed $argument )
  • ReflectionClass::newInstanceArgs — Erstellt eine neue Klasseninstanz aus den angegebenen Argumenten, die an den Konstruktor der Klasse übergeben wird.

public object ReflectionClass::newInstanceArgs ([ array $args ] )
  • /thinkphp/library/think/Container.php

 /**
     * 调用反射执行类的实例化 支持依赖注入
     * @access public
     * @param  string    $class 类名
     * @param  array     $vars  参数
     * @return mixed
     */
    public function invokeClass($class, $vars = [])
    {
        try {            $reflect = new ReflectionClass($class);            $constructor = $reflect->getConstructor();            //用于支持依赖的注入
            $args = $constructor ? $this->bindParams($constructor, $vars) : [];            return $reflect->newInstanceArgs($args);
        } catch (ReflectionException $e) {            throw new ClassNotFoundException('class not exists: ' . $class, $class);
        }
    }

Verwandte Empfehlungen:

Detaillierte Erläuterung der PHP-Reflektionsmethode, die eine private Methode in der Ausführungsklasse aufruft

Kurze Erläuterung des Beispiels eines PHP-Reflektionsmechanismus

Detaillierte Erläuterung des PHP-Reflektionsmechanismus und Beispiele für Plug-in-Architekturen

Das obige ist der detaillierte Inhalt vonErklärung 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