全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PHP三种方式实现链式操作详解

在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小时内与您取得联系。