流模式

 

在软件工程中,流接口(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

 

posted @ 2017-01-09 09:17  _logan  阅读(150)  评论(0编辑  收藏  举报