PHP 反射类学习记录


1 开发环境

windows 

TP5

参考文档  

http://php.net/manual/zh/class.reflectionclass.php

2 准备工作 

新建一个测试反射类 TestReflection.php

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

namespace app\api\controller\v3;


class TestReflection
{
   /**
    * @title 首页
    */
   public function index(){
       echo 'index';
   }
   public function add(){
       echo 'add';
   }

}

 在新建 一个类  Test.php

3 测试

3.1 ReflectionClass::__construct — 初始化 ReflectionClass 类

public ReflectionClass::__construct ( mixed $argument )


public function index(){
   
$method = new \ReflectionClass('app\api\controller\v3\TestReflection');
   
dump($method);
}


返回结果是 

object(ReflectionClass)#12 (1) {
  ["name"] => string(26) "app\api\controller\v3\TestReflection"
}


3.2 ReflectionClass::export — 导出一个类

public static string ReflectionClass::export ( mixed $argument [, bool $return = false ] )


public function index(){
   $method = new \ReflectionClass('ReflectionClass');
   \Reflection::export($method);

}

返回的结果是:

Class [ class app\api\controller\v3\TestReflection ] { @@ D:\phpStudy\WWW\mmks\application\api\controller\v3\TestReflection.php 12-21 - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [2] { Method [ public method index ] { @@ D:\phpStudy\WWW\mmks\application\api\controller\v3\TestReflection.php 14 - 16 } Method [ public method add ] { @@ D:\phpStudy\WWW\mmks\application\api\controller\v3\TestReflection.php 17 - 19 } } }


3.3 ReflectionClass::getConstant — 获取定义过的一个常量

public mixed ReflectionClass::getConstant ( string $name )

获取定义过的一个常量。


在TestReflection 新增一个常量

<?php
/**
* User: [一秋]
* Date: 2017-11-23
* Time: 16:29
* Desc: 成功来源于点滴
*/
namespace app\api\controller\v3;
class TestReflection
{
   const NAME = 'wang';
   /**
    * @title 首页
    */
   public function index(){
       echo 'index';
   }
   public function add(){
       echo 'add';
   }

}


Test.php


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

namespace app\api\controller\v3;

class Test
{
   public function index(){
       $method = new \ReflectionClass('app\api\controller\v3\TestReflection');
       //导出一个类
//        \Reflection::export($method);
       $name = $method->getConstant('NAME');
       dump($name);
   }
}


返回的结果是 

string(4) "wang"

这里如果常量不存在 则返回false 


3.4 ReflectionClass::getConstants — 获取一组常量

public array ReflectionClass::getConstants ( void )


这里的 getConstants 不要拼错了。比上一个方法多了一个 s  

获取某个类的全部已定义的常量,不管可见性如何定义。

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


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

namespace app\api\controller\v3;

class Test
{
   public function index(){
       $method = new \ReflectionClass('app\api\controller\v3\TestReflection');
       //导出一个类
//        \Reflection::export($method);
       $name = $method->getConstants();
       dump($name);
   }
}


返回的结果是


array(1) {
  ["NAME"] => string(4) "wang"
}

3.5 ReflectionClass::getConstructor — 获取类的构造函数

public ReflectionMethod ReflectionClass::getConstructor ( void )


获取已反射的类的构造函数。


为了方便测试  这里映射自身

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

namespace app\api\controller\v3;

class Test
{
   const NAME = 'wang';
   public function __construct()
   {
   }

   public function index(){
       $method = new \ReflectionClass(__CLASS__);
       //导出一个类
//        \Reflection::export($method);
       $name = $method->getConstructor();
       dump($name);
   }
}


返回的结果是


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


3.6 ReflectionClass::getDefaultProperties — 获取默认属性

public array ReflectionClass::getDefaultProperties ( void )

获取类的默认属性(包括了继承的属性)。

参数

此函数没有参数。

返回值

默认属性的数组,其键是属性的名称,其值是属性的默认值或者在属性没有默认值时是 NULL。 这个函数不区分静态和非静态属性,也不考虑可见性修饰符。

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

namespace
来源: up61技术博客 欢迎分享 (QQ:529857614)

qq交流群:63739043 up61博客-php交流群

上一篇: MySQL 查询数据
下一篇: PHP 反射类学习记录-day02


评论