PHP以三种方式实现链式操作

PHP以三种方式实现链式操作

在php中,有许多字符串函数,比如在找到字符串长度之前过滤掉字符串末尾的空格。一般的写作方法是:

如果你想实现一个像js这样的链式操作,你应该怎么写呢?

以下是通过三种方式实现的:

方法1。使用魔法函数__call与call_user_func结合来实现

其思想是:首先定义一个StringHelper,构造函数直接赋值,然后链调用trim和strlen函数,并在magic函数_ _调用中使用call_user_func来处理调用关系,如下所示:

classStringHelper{

私人$价值;

函数_ _构造(值){

$这个->;值= $ value

}

函数_ _调用($function,$args){

$这个->;值= call _ user _ func($ func,->;值,$ args[0]);

退回$这个;

}

functions strlen {

returnstrlen($ this->;价值);

}

}

$ str = NewStringHelper(“SD F0”);

回声$str->;修剪(' 0')->。strlen

终端执行脚本:

8

方法2。使用魔法函数__call结合call_user_func_array来实现

展开全文

classStringHelper{

私人$价值;

函数_ _构造(值){

$这个->;值= $ value

}

函数_ _调用($function,$args){

array _ unshuft($args,$this->;价值);

$这个->;value = call _ user _ func _ array($ function,$ args);

退回$这个;

}

functions strlen {

returnstrlen($ this->;价值);

}

}

$ str = NewStringHelper(“SD F0”);

回声$str->;修剪(' 0')->。strlen

描述:

array _ unshift函数用于将新元素插入数组。新数组的值将插入数组的开头。

Call_user_func和call_user_func_array都是动态调用函数的方法,不同之处在于参数以不同的方式传递。

方法3。不要使用魔法函数__call来实现

只需将_call改为trim函数:

$这个->;值=修剪(此->;价值,$ t);

退回$这个;

}

关键是返回$this指针是为了便于调用后一个函数。

-返回搜狐查看更多信息

负责任的编辑:

留言板

|PowerBy Zblog, Theme: 涂涂研版 By www.tusay.net