对于 [$obj, $method](...$args) 写法

今天看到一个写法,因为自己没怎么用过所以记录一下

 

$args = ['a','b','c','string',18];

$obj = new Index();

$method = 'get_string';

$result = [$obj, $method](...$args);


上面代码运行打印得到:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => string
    [4] => 18
)


理解起来就是:
[$obj, $method] 表示数组,其中 $obj 代表的是一个对象或者是一个类,$method 表示类或者对象中的一个方法名
而 (...$args) 表示可变参数列表,因此 [$obj, $method](...$args) 的含义是调用 $obj 对象或类中的 $method 方法,并传入可变数量的参数 $args

 

上述写法的好处在于它可以避免硬编码方法调用,提供更强大的动态性。具体而言,通过动态调用方法可以实现以下几个方面的需求:实现使用方法的配置化
比如,可以将方法的名称和参数配置在配置文件中,然后在代码中读取配置文件,动态调用方法。实现方法的批量调用
比如,在需要批量计算数组元素总和时,可以将所有数组传入一个方法中进行计算。实现运行时的定制需求
比如,在一个 Web 应用中,用户点击了某个按钮,需要动态调用模块中的某个方法,这时可以使用动态调用方式来实现。
posted @ 2023-04-20 16:12  拾柒丷  阅读(20)  评论(0编辑  收藏  举报