php链式操作的实现方法有哪些
时间:2021-06-05
来源:互联网
标签:
今天PHP爱好者为您带来php实现链式操作的方法:1、使用魔法函数“__call”结合“call_user_func”来实现;2、使用魔法函数“__call”结合“call_user_func_array”来实现;3、利用trim()函数来实现。希望对大家有所帮助。

本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑
在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是:
strlen(trim($str))
如果要实现类似js中的链式操作,比如像下面这样应该怎么写
$str->trim()->strlen()
下面分别用三种方式来实现:
方法一、使用魔法函数__call结合call_user_func来实现
思想:首先定义一个字符串类StringHelper,构造函数直接赋值value,然后链式调用trim()和strlen()函数,通过在调用的魔法函数__call()中使用call_user_func来处理调用关系,实现如下:
<?php
class StringHelper
{
private $value;
function __construct($value)
{
$this->value = $value;
}
function __call($function, $args){
$this->value = call_user_func($function, $this->value, $args[0]);
return $this;
}
function strlen() {
return strlen($this->value);
}
}
$str = new StringHelper(" sd f 0");
echo $str->trim('0')->strlen();
终端执行脚本:
php test.php
8
方法二、使用魔法函数__call结合call_user_func_array来实现
<?php
class StringHelper
{
private $value;
function __construct($value)
{
$this->value = $value;
}
function __call($function, $args){
array_unshift($args, $this->value);
$this->value = call_user_func_array($function, $args);
return $this;
}
function strlen() {
return strlen($this->value);
}
}
$str = new StringHelper(" sd f 0");
echo $str->trim('0')->strlen();
说明:
array_unshift(array,value1,value2,value3...)
array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
call_user_func()和call_user_func_array都是动态调用函数的方法,区别在于参数的传递方式不同。
方法三、不使用魔法函数__call,利用trim()函数来实现
只需要修改_call()为trim()函数即可:
public function trim($t)
{
$this->value = trim($this->value, $t);
return $this;
}
重点在于,返回$this指针,方便调用后者函数。
以上就是php链式操作的实现方法有哪些的详细内容,更多请关注php爱好者其它相关文章!
-
Ext.MessageBox消息框使用详解 时间:2025-11-20 -
GAppProxy超详细安装配置教程 时间:2025-11-20 -
C#中e.Cancel用法详解 e.Cancel和e.Handled区别 时间:2025-11-20 -
TestDirector超详细下载、安装、配置教程 时间:2025-11-20 -
AssemblyInfo.cs文件详解(常见属性及作用等) 时间:2025-11-20 -
什么是无理数 常见的无理数有哪些 无理数和有理数的区别 时间:2025-11-19
今日更新
-
163免费邮箱登录入口-163邮箱官网登录
阅读:18
-
欧易交易所的模拟交易应该怎么设置
阅读:18
-
欧易如何平衡合规与流量增长?3大策略揭秘
阅读:18
-
想知道闪电的梗是什么梗吗?揭秘网络爆火梗背后的搞笑真相!
阅读:18
-
天刀手游全新赛年外观今日开放兑换-惊喜免费福利来袭
阅读:18
-
修仙时代手游好玩吗-修仙时代好不好玩
阅读:18
-
凡应未成年人可以玩吗-凡应游戏未成年人能不能玩
阅读:18
-
闪电梗是网络爆火的表情包梗,源自夸张闪电特效,用来表达瞬间震惊或社死,全网年轻人都在玩!
阅读:18
-
永劫无间手游上海博物馆联动二期开启-惊喜活动来袭
阅读:18
-
修仙时代是手游吗-修仙时代是不是手游
阅读:18










