在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来实现
只需要修改_call()为trim()函数即可:
public function trim($t)
{
$this->value = trim($this->value, $t);
return $this;
}
重点在于,返回$this指针,方便调用后者函数。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# PHP
# 链式操作
# PHP实现的连贯操作、链式操作实例
# PHP简单数据库操作类实例【支持增删改查及链式操作】
# PHP对象链式操作实现原理分析
# PHP实现链式操作的核心思想
# PHP实现链式操作的原理详解
# PHP实现链式操作的三种方法详解
# php类自动装载、链式操作、魔术方法实现代码
# PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
# thinkPHP5框架数据库连贯操作之cache()用法分析
# thinkphp连贯操作实例分析
# php链式操作的实现方式分析
# 链式
# 来实现
# 求出
# 都是
# 中有
# 三种
# 将被
# 只需要
# 要先
# 大家多多
# __call
# strong
# style
# span
# color
# gt
# class
# brush
相关文章:
如何通过万网虚拟主机快速搭建网站?
如何使用Golang table-driven基准测试_多组数据测量函数效率
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何在VPS电脑上快速搭建网站?
如何通过远程VPS快速搭建个人网站?
表情包在线制作网站免费,表情包怎么弄?
北京网站制作的公司有哪些,北京白云观官方网站?
如何安全更换建站之星模板并保留数据?
大连网站设计制作招聘信息,大连投诉网站有哪些?
购物网站制作公司有哪些,哪个购物网站比较好?
广德云建站网站建设方案与建站流程优化指南
建站之星上传入口如何快速找到?
建站之星导航如何优化提升用户体验?
ppt制作免费网站有哪些,ppt模板免费下载网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
seo网站制作优化,网站SEO优化步骤有哪些?
潮流网站制作头像软件下载,适合母子的网名有哪些?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
网站制作费用多少钱,一个网站的运营,需要哪些费用?
济南专业网站制作公司,济南信息工程学校怎么样?
如何访问已购建站主机并解决登录问题?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
如何在建站宝盒中设置产品搜索功能?
网站制作企业,网站的banner和导航栏是指什么?
制作宣传网站的软件,小红书可以宣传网站吗?
英语简历制作免费网站推荐,如何将简历翻译成英文?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
建站与域名管理如何高效结合?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
如何在万网主机上快速搭建网站?
建站主机是否等同于虚拟主机?
如何在建站主机中优化服务器配置?
网站企业制作流程,用什么语言做企业网站比较好?
网站制作壁纸教程视频,电脑壁纸网站?
建站之星如何配置系统实现高效建站?
宁波免费建站如何选择可靠模板与平台?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
宝塔面板如何快速创建新站点?
高防服务器如何保障网站安全无虞?
如何打造高效商业网站?建站目的决定转化率
中山网站制作网页,中山新生登记系统登记流程?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何在搬瓦工VPS快速搭建网站?
建站之星伪静态规则如何设置?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何在服务器上配置二级域名建站?
如何通过NAT技术实现内网高效建站?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
建站主机数据库如何配置才能提升网站性能?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。