zoukankan      html  css  js  c++  java
  • 流模式

    在软件工程中,流接口(Fluent Interface)是指实现一种面向对象的、能提高代码可读性的 API 的方法,其目的就是可以编写具有自然语言一样可读性的代码,我们对这种代码编写方式还有一个通俗的称呼 —— 方法链。
     1 <?php
     2 
     3 class Sql
     4 {
     5     /**
     6      * @var array
     7      */
     8     protected $fields = array();
     9 
    10     /**
    11      * @var array
    12      */
    13     protected $from = array();
    14 
    15     /**
    16      * @var array
    17      */
    18     protected $where = array();
    19 
    20     /**
    21      * 添加 select 字段
    22      *
    23      * @param array $fields
    24      *
    25      * @return SQL
    26      */
    27     public function select(array $fields = array())
    28     {
    29         $this->fields = $fields;
    30 
    31         return $this;
    32     }
    33 
    34     /**
    35      * 添加 FROM 子句
    36      *
    37      * @param string $table
    38      * @param string $alias
    39      *
    40      * @return SQL
    41      */
    42     public function from($table, $alias)
    43     {
    44         $this->from[] = $table . ' AS ' . $alias;
    45 
    46         return $this;
    47     }
    48 
    49     /**
    50      * 添加 WHERE 条件
    51      *
    52      * @param string $condition
    53      *
    54      * @return SQL
    55      */
    56     public function where($condition)
    57     {
    58         $this->where[] = $condition;
    59 
    60         return $this;
    61     }
    62 
    63     /**
    64      * 生成查询语句
    65      *
    66      * @return string
    67      */
    68     public function getQuery()
    69     {
    70         return 'SELECT ' . implode(',', $this->fields)
    71         . ' FROM ' . implode(',', $this->from)
    72         . ' WHERE ' . implode(' AND ', $this->where);
    73     }
    74 }
    75 
    76 
    77 
    78 
    79 $instance = new Sql();
    80 $query = $instance->select(array('foo', 'bar'))
    81                     ->from('foobar', 'f')
    82                     ->where('f.bar = ?')
    83                     ->getQuery();
    View Code
  • 相关阅读:
    Github
    Vocabulary in Computer
    js中三种定义变量的方式const, var, let的区别
    Node.js-1
    JSON_in_js
    JSON快速入门
    Mysql tinyint长度为1时在java中被转化成boolean型
    maven上解决循环依赖、又不想新加第三模块的方法
    关于springboot和tomcat的服务能力做下简单的测试
    tomcat各个端口的作用
  • 原文地址:https://www.cnblogs.com/hangtt/p/6263989.html
Copyright © 2011-2022 走看看