PHP里面使用ReflectionClass小记

373次阅读
没有评论

共计 537 个字符,预计需要花费 2 分钟才能阅读完成。

ReflectionClass 是 PHP里面的反射类,传入类名可以解析整个类,方便我们做高级操作,下面记录使用遇到的坑

$className = ‘Test’;
        // 判断类是否存在
        if(!class_exists($className)) {
            // 报错
        }
        $rc = new \ReflectionClass($className);
        // 判断方法是否存在
        if (!$rc->hasMethod($actionName)) {
            // 报错
        }
        // 获取到方法
        $method = $rc->getMethod($actionName);
        // 判断当前方法是否为 public
        if (!$method->isPublic()) {
            // 报错,不是 public 方法不能 invoke
        }
        // 实例化,非静态方法,必须实例化,不然调用错误
        // 静态方法 invoke 使用方法 $classObj 这里 换成 null
        // $method->invoke($classObj, $param);
        // 多个参数时,使用 invokeArgs 方法
        // $method->invokeArgs($classObj, $param);
        $classObj = $rc->newInstance();
        return $method->invoke($classObj, $param);

正文完
 0
Eric chan
版权声明:本站原创文章,由 Eric chan 于2020-04-18发表,共计537字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。