PHP Reflection API详解(2)

<?php class ReflectionMethod extends ReflectionFunction { public __construct(mixed class, string name) public string __toString() public static string export() //导出该方法的信息 public mixed invoke(stdclass object, mixed* args) //调用该方法 public mixed invokeArgs(stdclass object, array args) //调用该方法,传多参数 public bool isFinal() //测试该方法是否为final public bool isAbstract() //测试该方法是否为abstract public bool isPublic() //测试该方法是否为public public bool isPrivate() //测试该方法是否为private public bool isProtected() //测试该方法是否为protected public bool isStatic() //测试该方法是否为static public bool isConstructor() //测试该方法是否为构造函数 public bool isDestructor() //测试该方法是否为析构函数 public int getModifiers() //取得该方法的修饰符 public ReflectionClass getDeclaringClass() //取得该方法所属的类 // Inherited from ReflectionFunction final private __clone() public string getName() public bool isInternal() public bool isUserDefined() public string getFileName() public int getStartLine() public int getEndLine() public string getDocComment() public array getStaticVariables() public bool returnsReference() public ReflectionParameter[] getParameters() public int getNumberOfParameters() public int getNumberOfRequiredParameters() } ?>

⑦ReflectionProperty类:

<?php class ReflectionProperty implements Reflector { final private __clone() public __construct(mixed class, string name) public string __toString() public static string export() //导出该属性的详细信息 public string getName() //取得该属性名 public bool isPublic() //测试该属性名是否为public public bool isPrivate() //测试该属性名是否为private public bool isProtected() //测试该属性名是否为protected public bool isStatic() //测试该属性名是否为static public bool isDefault() public int getModifiers() //取得修饰符 public mixed getValue(stdclass object) //取得该属性值 public void setValue(stdclass object, mixed value) //设置该属性值 public ReflectionClass getDeclaringClass() //取得定义该属性的类 public string getDocComment() //取得该属性的注释 } ?>

⑧ReflectionExtension类

<?php class ReflectionExtension implements Reflector { final private __clone() public __construct(string name) public string __toString() public static string export() //导出该扩展的所有信息 public string getName() //取得该扩展的名字 public string getVersion() //取得该扩展的版本 public ReflectionFunction[] getFunctions() //取得该扩展的所有函数 public array getConstants() //取得该扩展的所有常量 public array getINIEntries() //取得与该扩展相关的,在php.ini中的指令信息 public ReflectionClass[] getClasses() public array getClassNames() } ?>

使用例子:

<?php class Person{ private $_name; public $age; public function __construct(){ $this->sex = "male"; } public function action(){ echo "来自https://www.jb51.net的测试"; } } $class = new ReflectionClass('Person'); //获取属性 foreach($class->getProperties() as $property) { echo $property->getName()."\n"; } //获取方法 print_r($class->getMethods()); $p1 = new Person(); $obj = new ReflectionObject($p1); //获取对象和类的属性 print_r($obj->getProperties());

很明显上面代码中对象和类获取的属性是不同的,这是因为对象进行了contruct实例化,因此多了sex属性,PHP Reflection确实能够获取很多有用的信息。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d0f2b529d4e4def79359dcf40e98e9cf.html