Home  >  Article  >  Backend Development  >  Detailed description of reflection in php

Detailed description of reflection in php

韦小宝
韦小宝Original
2018-03-14 12:46:021643browse

This article talks about reflection in PHP. If you don’t know much about PHP reflection, you can take a look and understand it. This article briefly talks about reflection in PHP. Without further ado, let’s take a look!

PHP 5 has a complete reflection API, adding the ability to reverse engineer classes, interfaces, functions, methods, and extensions. Additionally, the Reflection API provides methods to extract documentation comments from functions, classes, and methods.

The use of reflection in TP framework

  • 1. ReflectionClass::__construct — Construct a ReflectionClass class

public ReflectionClass::__construct ( mixed $argument )

2. ReflectionClass::newInstanceArgs — Creates a new class instance from the given parameters, which will be passed to the constructor of the class.

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);
        }
    }

This article briefly describes reflection in PHP. If you still don’t understand it, just practice and write it yourself. Write!


The above is the detailed content of Detailed description of reflection in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn