Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Beschreibung der Reflexion in PHP

Detaillierte Beschreibung der Reflexion in PHP

韦小宝
韦小宝Original
2018-03-14 12:46:021650Durchsuche

In diesem Artikel geht es um die Reflexion in PHP. Wenn Sie nicht viel über die Reflexion in PHP wissen, werfen wir einen kurzen Blick darauf.

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

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

public ReflectionClass::__construct ( mixed $argument )

2. ReflectionClass::newInstanceArgs — Erstellt eine neue Klasseninstanz aus den angegebenen Parametern, die an den Konstruktor der Klasse übergeben wird.

public object ReflectionClass::newInstanceArgs ([ array $args ] )

3./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);
        }
    }

In diesem Artikel geht es kurz um die Reflexion in PHP. Wenn Sie es immer noch nicht verstehen, üben Sie es bitte und schreibe selbst!


Das obige ist der detaillierte Inhalt vonDetaillierte Beschreibung der Reflexion in PHP. 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