Maison >développement back-end >tutoriel php >Description détaillée de la réflexion en php

Description détaillée de la réflexion en php

韦小宝
韦小宝original
2018-03-14 12:46:021674parcourir

Cet article parle de la réflexion en PHP. Si vous ne savez pas grand chose sur la réflexion PHP, vous pouvez y jeter un œil et la comprendre.

PHP 5 propose une API de réflexion complète, ajoutant la possibilité de procéder à l'ingénierie inverse des classes, des interfaces, des fonctions, des méthodes et des extensions. De plus, l'API Reflection fournit des méthodes pour extraire les commentaires de documentation des fonctions, classes et méthodes.

L'utilisation de la réflexion dans le framework TP

  • 1. >

public ReflectionClass::__construct ( mixed $argument )
2. ReflectionClass::newInstanceArgs — Crée une nouvelle instance de classe à partir des paramètres donnés, qui sera transmise au constructeur de la classe.

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);
        }
    }
Cet article parle brièvement de la réflexion en PHP Si vous ne la comprenez toujours pas, veuillez vous entraîner. et écris par toi-même !


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