对PHP链式操作的理解

平常调用函数:

strlen(trim('011010','0'))

链式操作:

$str->trim('0')->strlen()

代码变优雅了,简单易懂,其实原理很简单。通过魔术方法__call来实现

class case1{
    public $value;

    public function __construct($str = NULL)
    {
        $this->value = $str;
    }

    public function __call($name, $args){
        $this->value = call_user_func($name,$this->value,$args[0]);
        return $this;
    }
    public function strlen(){
        return strlen($this->value);
    }
}

$str = new case1('0110100');

echo '</br>'.$str->value;//输出0110100


echo '</br>'.$str->trim('0')->strlen();//输出4

echo '</br>'.strlen(trim('0110100','0'));//输出4

这样就实现了一个简单的链式操作。

 链式操作的连续调用   最终值取决于 最后调用的那个方法,则最后一个方法  只能返回值  不能是对象就是$this    前面的方法共同点都是处理之后返回自身$this   所以就要在类或基类里申明变量。然后之前的方法对这些变量进行处理赋值   最后通过最后一个方法  返回一个值


也可以不用魔术方法,就是直接申明你需要的那个方法

class case1{
    public $value;

    public function __construct($str = NULL)
    {
        $this->value = $str;
    }

//    public function __call($name, $args){
//        $this->value = call_user_func($name,$this->value,$args[0]);
//        return $this;
//    }
    public function trim($val){
        $this->value = trim($this->value,$val);
        return $this;
    }
    public function strlen(){
        return strlen($this->value);
    }
}

$str = new case1('0110100');

echo '</br>'.$str->value;


echo '</br>'.$str->trim('0')->strlen();

echo '</br>'.strlen(trim('0110100','0'));
输出同样的结果
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值