• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ReflectionClass::newInstance()

    (PHP 5, PHP 7)

    从指定的参数创建一个新的类实例

    说明

    publicReflectionClass::newInstance(mixed $args[,mixed$...]): object

    创建类的新的实例。给出的参数将会传递到类的构造函数。

    参数

    $args

    接受可变数目的参数,用于传递到类的构造函数,和call_user_func()很相似。

    返回值

    错误/异常

    如果类的构造函数不是 public 的将会导致一个ReflectionException。

    $args指定了一个或多个参数,而类不具有构造函数时,将导致一个ReflectionException。

    参见

    • ReflectionClass::newInstanceArgs() 从给出的参数创建一个新的类实例。
    • ReflectionClass::newInstanceWithoutConstructor() 创建一个新的类实例而不调用它的构造函数
    looks like reflection class newInstance creates in memory representation of code where values are used, so using reference as constructor signature, you can not use this method.
    as the same input if called via new, or new $class works, but not via reflection:
     class a {
       public function __construct(&$a, $c) {
       }
     }
    // this works
     $A = new stdClass();
     $a = new a($A, 11);
     // also this works
     $classname = "a";
     $a = new $classname($A, 10);
     // but this fails:
     $r = new ReflectionClass("a");
     $r->newInstance($A, 10);
     PHP Warning: Parameter 1 to a::__construct() expected to be a reference, value given in reflection.php on line 15
     PHP Warning: ReflectionClass::newInstance(): Invocation of a's constructor failed in reflection.php on line 15