php 声音文件链 处理,PHP 三种方式实现链式操作
在php中有很多字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,一般的写法是:
strlen(trim($str))
如果要实现类似js中的链式操作,比如像下面这样应该怎么写?
$str->trim()->strlen()
下面分别用三种方式来实现:
方法一、使用魔法函数__call结合call_user_func来实现
思想:首先定义一个字符串类StringHelper,构造函数直接赋值value,然后链式调用trim()和strlen()函数,通过在调用的魔法函数__call()中使用call_user_func来处理调用关系,实现如下:
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来实现
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 三种方式实现链式操作相关推荐
- C#利用WCF改进文件流传输的三种方式
摘要:本文介绍C#利用WCF改进文件流传输的三种方式:MTOM模型.基于同步传输的异步回调模型.基于异步传输的异步模型,并提供相应的实现代码供参考. - WCF在跨域传输使用了两种模型的方法调用:一种 ...
- php支持链式操作,PHP三种方式实现链式操作-php教程
正在php中有不少字符串函数,例如要先过滤字符串收尾的空格,再求出其长度,普通的写法是: strlen(trim($str)) 假如要完成相似js中的链式操作,比方像上面这样应该怎样写? $str-& ...
- 使用git下载项目到本地,指定本地文件夹位置的三种方式
使用git下载项目到本地,指定本地文件夹位置的三种方式 使用VSCODE里的"克隆"功能直接粘贴项目链接即可选择本地想保存的位置. 使用git bash窗口下载项目之前,先切换到你 ...
- 文件上传的三种方式-Java
前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...
- 使用apache-poi生成excel文件与同步请求三种方式与文件下载
使用apache-poi生成excel文件 a)添加依赖: <!-- poi依赖--><dependency><groupId>org.apache.poi< ...
- python中判断文件是否存在的三种方式_Python中判断文件是否存在的方法
Python中判断文件是否存在的方法 发布时间:2020-08-06 11:15:42 来源:亿速云 阅读:58 作者:小新 这篇文章主要介绍Python中判断文件是否存在的方法,文中介绍的非常详细, ...
- java责任链模式的三种方式,分享一点面试小经验
字节跳动 ⾯试前 ⼀⾯ ⼆⾯ ⼩结 ⾯试前 头条的⾯试是三家⾥最专业的,每次⾯试前有专⻔的HR和你约时间,确定OK后再进⾏⾯试.每次都是通过视频⾯试,因为都是之前都是电话⾯或现场⾯,所以视频⾯试还是有 ...
- Mybatis笔记整理1(基本文件与配置,三种方式完成数据库操作)
基本文件与配置 pojo类,省略setget,tostring方法 public class User implements Serializable {/*** */private static f ...
- 元素等待的三种方式(隐式等待、显示等待、强制等待)
目录 隐式等待 显示等待 强制等待 如何选用等待方式 隐式等待 # 隐式等待:设置一个超时时间,在这个时间内,不断的寻找元素,超时找不到就抛出异常 driver.implicitly_wait(10) ...
最新文章
- 为数据中心度身定制智能基础设施管理系统
- html语言amp,第二amp;三讲HTML语言.ppt
- python下绘制折线图
- 【Elasticsearch】使用两阶段提交在 Elasticsearch 中模拟事务功能
- 吴恩达机器学习之线性逻辑回归实现部分
- Ubuntu 16.04 软件安装
- MySQL的basedir
- 《我的第一本算法书》读书笔记
- 解决sublime text 3使用Install Package时出现There are no packages available for installation问题
- C++面试题,平时面试不可缺少的!
- SQL不同服务器数据库之间的数据操作整理(完整版)
- 不要问我有多懒,写个脚本跑django
- OpenCL编程入门
- 【BDTC 2018】PingCAP申砾:做一个真正通用的数据库产品
- 启动不了 驱动程序签字功能,bios关闭驱动数字签名 如何在bios禁用驱动程序签名,装系统,启动行为那个无效?...
- matlab 决策树 多叉树,决策树简介
- python实现股票历史数据可视化分析
- 微信公众号---收货地址共享接口
- 一文读懂 WalletConnect
- 如何读懂EDIFACT报文
热门文章
- Smarty模板引擎技术二
- 目录访问共享C#怎么访问共享目录
- 数据库应用程序为什么不能脱离数据库管理系统独立运行
- Multiple substitutions specified in non-positional format; did you mean to add the formatted=false
- 鸿蒙系统跟腾讯合作,要和华为鸿蒙竞争?腾讯系统开源了,仅1.8K,支持众多芯片 - 区块网...
- 数据 正则化 python_Python数据科学:正则化方法
- python标志变量_Python 中的 global 标识对变量作用域的影响
- 感恩节(美食火鸡大餐)PNG免扣素材 总有一款你用得上
- 为你的平面海报设计提供灵感和思路
- 电商风靡2020的C4D立体感海报设计,psd分层模板来了。