关于php如何实现委托模式

前言

       前几天看源码的时候,发现一个源码使用的一种让函数自动调用数组中的各种参数用法,很是让我感兴趣,具体是哪个函数,我好像记错了,记成了func_get_args()
       但是很不幸这个函数是返回这个函数中所有参数的意思。类似的函数有func_get_arg() 以及func_num_args() ,意思返回一个参数,以及返回参数个数。
       后来经过“艰苦”查询(笑),得到了一个大致答案。那就是一种代码书写技巧,即委托模式。所以现在我也试着开始慢慢学着文档撸一段代码,来简单实现下php的委托模式。

写在前面

       我们先说明一下什么叫做委托模式,这个有很多称呼,我就不一一说明了,这个简单讲就是有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。(这不就是字面意义吗,啊喂,摔!) 。那么如何使用php实现委托模式呢?答案就是利用反射来实现。

关于反射机制

       反射机制是php5之后才有的新功能(所以基本都有,笑),主要作用是导出或提取出关于类、方法、属性、参数等的详细信息,包括注释(这个牛批了)。具体使用方法,各位看客可以参考下php手册中的用法
https://www.php.net/manual/zh/class.reflectionclass.php
下面写一个demo来演示一下这个反射机制的使用方法

//首先创建一个试验类,这个类里面基本所有属性都有了
class A
{
    public $one = 'haha';
    protect $two = 'ahaha';
    private $test="asdasda";
    public function __construct()
    {
        echo 123;
    }
    
    protect function echoOne()
    {
        echo $this->one."\n";
    }
    privatefunction echoTwo()
    {
        echo $this->two."\n";
    }
}
//紧接着就需要php中的强大的反射机制了
//这是获得类似结果集。。
$reflector = new ReflectionClass('A');
//获取所有属性,与getDefaultProperties有区别,类似ASSOC和ROW(笑)
$properties = $reflector->getProperties();
//获取所有方法
$func=  $reflector->getMethods();
$t1 = $reflector->getDefaultProperties();
var_dump($t1);
var_dump($func);
var_dump($properties);

下面是输出的结果
在这里插入图片描述
       关于反射机制我们就先说到这里,因为时间有点晚,剩下我明天再开始(笑),身体最重要。
       关于这个函数,今天找到了是call_user_func_array() 昨天太晚了,没有总结,哎嘿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章