首页 » PHP教程 » callphp技巧_php7魔术方法__call的最佳实战之链式操作实现

callphp技巧_php7魔术方法__call的最佳实战之链式操作实现

访客 2024-10-29 0

扫一扫用手机浏览

文章目录 [+]

比如像下面这样该当怎么实现?

$str->trim()->strlen()

callphp技巧_php7魔术方法__call的最佳实战之链式操作实现

call_user_func函数详解

call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed

callphp技巧_php7魔术方法__call的最佳实战之链式操作实现
(图片来自网络侵删)

call_user_func 函数类似于一种特殊的调用函数的方法,

第一个参数callback是被调用的回调函数,

别的参数是回调函数的参数

利用方法如下:

function sum($a,$b){ return $a + $b;}//第一个参数sum是调用的方法名//第2个参数7和第三个参数8是sum方法调用的参数$result = call_user_func('sum',7,8);echo $result;//输出结果15基于魔术方法__call实现php工具链式操作

如何通过类的魔术方法__call实现$str->trim()->strlen()的链式操作呢?

实现思路:

首先定义一个字符串类StringHelper,布局函数直接赋值value,

然后链式调用trim()和strlen()函数,

通过在调用的邪术函数__call()中利用

代码实现如下:

class StringHelper{ public $value; public function __construct($str) { $this->value = $str; } public function __call($name, $arguments) { $this->value = call_user_func($name,$this->value); return $this; }}$str = new StringHelper(' hello '); $result = $str->trim()->strlen(); //1.$str->trim(),由于StringHelper类没有trim方法,这时候调用__call魔术方法 //2.__call($name, $arguments)中$name的值是trim //3.call_user_func的第一个参数值为调用的方法名trim,第二个参数便是$this->value//$str->strlen()实行流程同$str->trim() echo $result->value;

运行结果

5

php7进阶到架构师干系阅读

https://www.kancloud.cn/gofor/gofor

末了,欢迎大家留言补充,谈论~~~
标签:

相关文章

语言游戏聚会的魅力,跨界交流的盛宴

在繁忙的都市生活中,一场别开生面的语言游戏聚会悄然兴起。这不仅是一场简单的娱乐活动,更是一次跨界交流的盛宴,一场思想的碰撞与火花。...

PHP教程 2024-12-29 阅读0 评论0

语言序列逻辑在现代传播中的运用与影响

语言序列逻辑,作为现代传播学中的重要理论之一,对于理解语言传播的规律、提高传播效果具有重要作用。在信息化、网络化时代,语言序列逻辑...

PHP教程 2024-12-29 阅读0 评论0