首页后端开发PHPphp链式操作的实现

php链式操作的实现

时间2024-02-01 23:11:02发布访客分类PHP浏览1006
导读:收集整理的这篇文章主要介绍了php链式操作的实现,觉得挺不错的,现在分享给大家,也给大家做个参考。php链式操作的关键是在做完操作后要return $this;一、不使用__call方法实现链式操作<?phpclass SQL{...
收集整理的这篇文章主要介绍了php链式操作的实现,觉得挺不错的,现在分享给大家,也给大家做个参考。

php链式操作的关键是在做完操作后要return $this;

一、不使用__call方法实现链式操作

?phpclass SQL{
        PRivate $sql=array("From"=>
    "",            "where"=>
    "",            "order"=>
    "",            "limIT"=>
    "");
    public function from($tableName) {
            $this->
    sql["from"]="FROM ".$tableName;
            return $this;
    }
    public function where($_where='1=1') {
            $this->
    sql["where"]="WHERE ".$_where;
            return $this;
    }
    public function order($_order='id DESC') {
            $this->
    sql["order"]="ORDER BY ".$_order;
            return $this;
    }
    public function limit($_limit='30') {
            $this->
    sql["limit"]="LIMIT 0,".$_limit;
            return $this;
    }
    public function select($_select='*') {
            return "SELECT ".$_select." ".(implode(" ",$this->
    sql));
    }
}
    $sql =new Sql();
    echo $sql->
    from("testTable")->
    where("id=1")->
    order("id DESC")->
    limit(10)->
    select();
    //输出 SELECT * FROM testTable WHERE id=1 ORDER BY id DESC LIMIT 0,10?>
    

二、使用__call方法实现链式操作

__call()在对象调用一个不可访问的方法时会被触发,所以可以实现类的动态方法的创建,实现php的方法重载功能,但它其实是一个语法糖(__construct()方法也是)。

?phpclass String{
        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 String('01389');
    echo $str->
    trim('0')->
    strlen();
    // 输出结果为 4;trim('0')后$str为"1389"?>
    

相关推荐:

PHP视频教程:https://www.php.cn/course/list/29/tyPE/2.htML

以上就是php链式操作的实现的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: php链式操作的实现
本文地址: https://pptw.com/jishu/596043.html
php实现性能优化 PHP fsockopen函数详解

游客 回复需填写必要信息