关于php如何实现委托模式

本文介绍了PHP中的委托模式及其实现方式,并通过反射机制进行示例演示。反射机制允许开发者提取类、方法等信息,为实现动态调用提供便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

       前几天看源码的时候,发现一个源码使用的一种让函数自动调用数组中的各种参数用法,很是让我感兴趣,具体是哪个函数,我好像记错了,记成了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() 昨天太晚了,没有总结,哎嘿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值