爱问知识人 爱问教育 医院库

php连贯操作实现_PHP教程

首页

php连贯操作实现_PHP教程


        

提交回答
好评回答
  • 2023-03-15 10:30:00
      php连贯操作实现
    我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码。
    M('User')->where(array('id'=>1))->field('name')->select();
    这样不仅有利于编码,而且也能让人"心情愉悦"呢。
      好了,不多说了。让我们看看如何实现的吧?
    //数据库操作基类[PS:主要功能连贯功能实现]
    class Db{
    //此属性定义要实现连贯操作的方法名
    public $sql = array(
    "field" =>"",
    "where" =>"",
    "order" =>"",
    "limit" =>"",
    "group" =>"",
    "having" =>"",
    );
    /**
    * 连贯操作时,调用field() where() order() limit() group() having()方法且组合成sql语句
    * 此方法为PHP魔术方法,调用类中不存在的方法时就会自动调用此方法
    * @param $methodName 调用不存在的方法时,接收这个方法名称的字符串
    * @param $args 调用不存在的方法时,接收这个方法的参数,以数组形式接收
    */
    function __call($methodName,$args){
    //把要请求的方法名,统一转为小写
    $methodName=strtolower($methodName);
    //若请求方法名与成员属性数组$sql下标对应上;则将第二个参数,赋值给数组中"下标对应的元素"
    if(isset($this->sql[$methodName])){
    $this->sql[$methodName]=$args[0];
    }else{
    echo '调用类'get_class($this)。
      '中的'$methodName。'()方法不存在'
    }
    //返回对象;从而可以继续调用本对象中的方法,形成连贯操作
    return $this;
    }
    /**
    * 用此方法拼接成一个select的sql语句;[PS:此方法终结了连贯操作,置于连贯操作的最后面]
    */
    function select(){
    //按照select语法拼接sql字符串[PS:可以在mysql命令行中执行"help select;"查看其语法构结]
    $sql="SELECT {$this->sql['field']} FROM test {$this->sql['where']} {$this->sql['group']} {$this->sql['having']} {$this->sql['order']} {$this->sql['limit']}";
    echo $sql;
    }
    }
    $obj=new db();$obj->field('name,sex,address')->where('where name="guoyu"')->limit('limit 1')->select();//输出:SELECT name,sex,address FROM test where name=guoyulimit 1http://www。
      bkjia。com/PHPjc/986703。htmlwww。bkjia。comtruehttp://www。bkjia。com/PHPjc/986703。htmlTechArticlephp连贯操作实现 我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码。
       M(User)-where(array(id=1))-field(name)-select(); 这样不仅有利于编码。

    在***

    2023-03-15 10:30:00

类似问题

换一换
  • 电脑/网络 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):