public function invokeClass(string $class, array $vars = []) { try { //根据反射机制获取 类的内部信息(多少个私有属性,多少个共有属性等等) $reflect = new ReflectionClass($class); } catch (ReflectionException $e) { throw new ClassNotFoundException('class not exists: ' . $class, $class, $e); } if ($reflect->hasMethod('__make')) { $method = $reflect->getMethod('__make'); if ($method->isPublic() && $method->isStatic()) { $args = $this->bindParams($method, $vars); return $method->invokeArgs(null, $args); } } //获取构造函数 $constructor = $reflect->getConstructor(); //分析构造函数的参数,并获取具体的参数 $args = $constructor ? $this->bindParams($constructor, $vars) : []; //带参数实例化对应的类 $object = $reflect->newInstanceArgs($args); $this->invokeAfter($class, $object); return $object; }
TP6 依赖注入
最新推荐文章于 2024-06-30 11:07:51 发布