PHP 反射类学习记录-day02


接上篇   


3.11 ReflectionClass::getFileName — 获取定义类的文件名

说明

public string ReflectionClass::getFileName ( void )

获取类被定义的文件的文件名。

参数

此函数没有参数。

返回值

返回类所定义的文件名。如果这个类是在 PHP 核心或 PHP 扩展中定义的,则返回 FALSE

  public function index(){
//        $method = new \ReflectionClass('ReflectionClass');
       $method = new \ReflectionClass(__CLASS__);
       $name = $method->getFileName();
       dump($name);
   }

返回的结果是

string(59) "D:\phpStudy\WWW\mmks\application\api\controller\v3\Test.php"
 public function index(){
       $method = new \ReflectionClass('ReflectionClass');
//        $method = new \ReflectionClass(__CLASS__);
       $name = $method->getFileName();
       dump($name);
   }

返回的结果是  

bool(false)


3.12 ReflectionClass::getInterfaceNames — 获取接口(interface)名称

说明

public array ReflectionClass::getInterfaceNames ( void )

获取接口(interface)名称。

参数

此函数没有参数。

返回值

一个数值数组,接口(interface)的名称是数组的值。


<?php
/**
* User: [一秋]
* Date: 2017-11-23
* Time: 15:59
* Desc: 成功来源于点滴
*/

namespace app\api\controller\v3;
class Test implements test1,test2
{
   public function index(){
       $method = new \ReflectionClass(__CLASS__);
       $name = $method->getInterfaceNames();
       dump($name);
   }
}

interface test1{}
interface test2{}

返回结果 

array(2) {
  [0] => string(27) "app\api\controller\v3\test1"
  [1] => string(27) "app\api\controller\v3\test2"
}


3.13 ReflectionClass::getInterfaces — 获取接口

说明

public array ReflectionClass::getInterfaces ( void )

获取接口。

参数

此函数没有参数。

返回值

接口的关联数组,数组键是接口(interface)的名称,数组的值是 ReflectionClass 对象。


<?php
/**
* User: [一秋]
* Date: 2017-11-23
* Time: 15:59
* Desc: 成功来源于点滴
*/

namespace app\api\controller\v3;
class Test implements test1,test2
{
   public function index(){
       $method = new \ReflectionClass(__CLASS__);
       $name = $method->getInterfaces();
       dump($name);
   }
}

interface test1{}
interface test2{}

返回结果是:

array(2) {
  ["app\api\controller\v3\test1"] => &object(ReflectionClass)#13 (1) {
    ["name"] => string(27) "app\api\controller\v3\test1"
  }
  ["app\api\controller\v3\test2"] => &object(ReflectionClass)#14 (1) {
    ["name"] => string(27) "app\api\controller\v3\test2"
  }
}

3.14 ReflectionClass::getMethod — 获取一个类方法的 ReflectionMethod。


说明

public ReflectionMethod ReflectionClass::getMethod ( string $name )

获取一个类方法的 ReflectionMethod。

参数

  • name

  • 要反射的方法名称。

返回值

一个 ReflectionMethod。

错误/异常

如果方法不存在则会抛出 ReflectionException 异常。

public function index(){
   $method = new \ReflectionClass(__CLASS__);
   $name = $method->getMethod('index');
   dump($name);
}

返回结果是:

object(ReflectionMethod)#13 (2) {
  ["name"] => string(5) "index"
  ["class"] => string(26) "app\api\controller\v3\Test"
}


3.15 ReflectionClass::getMethods — 获取方法的数组


说明

public array ReflectionClass::getMethods ([ int $filter ] )

获取类的方法的一个数组。

参数


  • filter

  • 过滤结果为仅包含某些属性的方法。默认不过滤。

    ReflectionMethod::IS_STATIC、 ReflectionMethod::IS_PUBLIC、 ReflectionMethod::IS_PROTECTEDReflectionMethod::IS_PRIVATE、 ReflectionMethod::IS_ABSTRACT、 ReflectionMethod::IS_FINAL 的按位或(OR),就会返回任意满足条件的属性。

    Note请注意:其他位操作,例如 ~ 无法按预期运行。这个例子也就是说,无法获取所有的非静态方法。

返回值

包含每个方法 ReflectionMethod 对象的数组

<?php
/**
* User: [一秋]
* Date: 2017-11-23
* Time: 15:59
* Desc: 成功来源于点滴
* Site: http://www.upwqy.com
*/
namespace app\api\controller\v3;
class Test
{
   public function index(){
       $method = new \ReflectionClass(__CLASS__);
       $name = $method->getMethods();
       dump($name);
   }
   public function one(){}
   final protected function two(){}
   private static function three(){}

}


返回结果 

array(4) {
  [0] => &object(ReflectionMethod)#13 (2) {
    ["name"] => string(5) "index"
    ["class"] => string(26) "app\api\controller\v3\Test"
  }
  [1] => &object(ReflectionMethod)#14 (2) {
    ["name"] => string(3) "one"
    ["class"] => string(26) "app\api\controller\v3\Test"
  }
  [2] => &object(ReflectionMethod)#15 (2) {
    ["name"] => string(3) "two"
    ["class"] => string(26) "app\api\controller\v3\Test"
  }
  [3] => &object(ReflectionMethod)#16 (2) {
    ["name"] => string(5) "three"
    ["class"] => string(26) "app\api\controller\v3\Test"
  }
}

3.16 ReflectionClass::getModifiers — 获取类的修饰符

说明

public int ReflectionClass::getModifiers ( void )

返回这个类访问修饰符的位字段。

参数

此函数没有参数。

返回值

返回 修饰符常量 的位掩码。

public function index(){
   $method = new \ReflectionClass(__CLASS__);
   $name = $method->getModifiers();
   dump($name);
}

返回结果

int(1048576)


3.17 ReflectionClass::getName — 获取类名

说明

public string ReflectionClass::getName ( void )

获取类的名称。

Warning

本函数还未编写文档,仅有参数列表。

参数

此函数没有参数。

返回值

The class name.

public function index(){
   $self = new \ReflectionClass("ReflectionClass");
   dump($self->inNamespace());
   dump($self->getName());
   dump($self->getNamespaceName());
   dump($self->getShortName());
   
   $method = new \ReflectionClass(__CLASS__);
   dump($method->inNamespace());
   dump($method->getName());
   dump($method->getNamespaceName());
   dump($method->getShortName());
}

返回结果

bool(false)
string(15) "ReflectionClass"
string(0) ""
string(15) "ReflectionClass"
bool(true)
string(26) "app\api\controller\v3\Test"
string(21) "app\api\controller\v3"
string(4) "Test"






本人主要从事APP,小程序开发,有专业的团队。微信:wqy0601415 (请注明需求);

上一篇: PHP 反射类学习记录
下一篇: MySQL WHERE 子句