是谁来自山川湖海,却囿于昼夜、厨房与爱。
### 举个例子
如果你使用过PHP的框架,你应该使用过此类代码:
如在laravel框架中:
1
| DB::table('xx')->select('xxxx')->where('xxxx','=','xx')->orderBy('xx','desc')->get();
|
在CI(codeigniter)框架中:
1
| $res =$this->db->from('blogs')->select('*')->join('comments', 'comments.id = blogs.id')->get();
|
### 创建链式方法
如果我们有这么一个类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php class test { public $var = array(); public function setName($name) { $this->var['name'] = $name; } public function setYear($year) { $this->var['year'] = $year; } public function getVar() { return $this->var; } }
$test = new test();
|
那么只需要在相应的方法后添加 return $this,就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?php class test { public $var = array(); public function setName($name) { $this->var['name'] = $name; return $this; } public function setYear($year) { $this->var['year'] = $year; return $this; } public function getVar() { return $this->var; } }
|
调用时:
1 2
| $test = new test(); var_dump($test->setName('fc')->setYear('23')->getVar());
|
这种技术虽然不会让你的PHP代码在本质上发生变化(如性能),但可使你的代码看起来更整洁,并且更容易维护。
静态方法(static)如何处理
要让静态方法也能使用链式调用,只需要加入 return new self
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class test2 { public static $var = array(); public static function setName($name) { self::$var['name'] = $name; return new self; } public static function getVar() { return self::$var; } }
|
http://fc-lamp.blog.163.com/blog/static/1745666872013106111248929/