PHP中有许多字符串函数,例如,先过滤字符串的结尾,然后查找字符串的长度。


Strlen(饰($str))


如果你想在js中实现一个链式操作,你应该写些什么


str()->装饰-> strlen()


以下是三种方式实现:

方法1。使用神奇的功能__call结合call_user_func

认为:首先,定义一个string类的构造函数直接赋值StringHelper,,然后调用strlen()和链饰()函数,在调用函数使用魔法__call call_user_func()方法调用关系。


< PHP
StringHelper类
{
私人价值;

功能__construct(价值)
{
$这个值;
}

功能__call($函数,为args){
美元->价值= call_user_func(合功能,美元->价值一美元的{ 0 });
返回$此;
}

函数strlen(){
返回strlen(美元->价值);
}
}

$str =新StringHelper(SD F 0);
回声$str ->修剪('0')-> strlen();




终端执行脚本:

php test.php



八



方法二。使用神奇的功能__call结合call_user_func_array


< PHP
StringHelper类
{
私人价值;

功能__construct(价值)
{
$这个值;
}

功能__call($函数,为args){
(一array_unshift美元,美元->价值);
美元->价值= call_user_func_array($函数,为args);
返回$此;
}

函数strlen(){
返回strlen(美元->价值);
}
}

$str =新StringHelper(SD F 0);
回声$str ->修剪('0')-> strlen();



解释uff1a


array_unshift(value1,value2,值数组,…)


的array_unshift()函数是用来插入新的元素到数组。新数组的值将被插入到数组的开始。

两call_user_func()和call_user_func_array动态调用函数的方法,而区别在于不同的参数传递方式。

方法三、不要用神奇的功能__call实施

只需修改_call()()()函数作为装饰:


公共功能修剪(T)
{
这个值=修剪(这个值,$ T);
返回$此;
}



关键是返回这个指针,并调用后者函数。



以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。