[摘要]本篇文章给大家带来的内容是关于php反射类的使用及Laravel对反射的使用介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。前言PHP的反射类与实例化对象作用相反,实例化是调用封...
本篇文章给大家带来的内容是关于php反射类的使用及Laravel对反射的使用介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。前言
PHP的反射类与实例化对象作用相反,实例化是调用封装类中的方法、成员,而反射类则是拆封类中的所有方法、成员变量,并包括私有方法等。就如“解刨”一样,我们可以调用任何关键字修饰的方法、成员。当然在正常业务中是建议不使用,比较反射类已经摒弃了封装的概念。
本章讲解反射类的使用及Laravel对反射的使用。
反射
反射类是PHP内部类,无需加载即可使用,你可以通过实例化  ReflectionClass 类去使用它。
方法
这里列举下PHP反射类常用的方法
| 方法名 | 注释 | 
|---|
| ReflectionClass::getConstant | 获取定义过的一个常量 | 
| ReflectionClass::getConstants | 获取一组常量 | 
| ReflectionClass::getConstructor | 获取类的构造函数 | 
| ReflectionClass::getDefaultProperties | 获取默认属性 | 
| ReflectionClass::getDocComment | 获取文档注释 | 
| ReflectionClass::getEndLine | 获取最后一行的行数 | 
| ReflectionClass::getFileName | 获取定义类的文件名 | 
| ReflectionClass::getInterfaceNames | 获取接口(interface)名称 | 
| ReflectionClass::getMethods | 获取方法的数组 | 
| ReflectionClass::getModifiers | 获取类的修饰符 | 
| ReflectionClass::getName | 获取类名 | 
| ReflectionClass::getNamespaceName | 获取命名空间的名称 | 
| ReflectionClass::getParentClass | 获取父类 | 
等等等等.... 所有关于类的方法、属性及其继承的父类、实现的接口都可以查询到。
详细文档请参考官网
栗子
<?php
    namespace A\B;
    
    class Foo { }
    
    $function = new \ReflectionClass('stdClass');
    
    var_dump($function->inNamespace());
    var_dump($function->getName());
    var_dump($function->getNamespaceName());
    var_dump($function->getShortName());
    
    $function = new \ReflectionClass('A\\B\\Foo');
    
    var_dump($function->inNamespace());
    var_dump($function->getName());
    var_dump($function->getNamespaceName());
    var_dump($function->getShortName());
?>