用来编写易于阅读的代码,就像天然语言同样(如英语)php
Yii 框架:CDbCommand 与 CActiveRecord 也使用此模式laravel
Doctrine2 的 QueryBuilder,就像下面例子中相似面试
PHPUnit 使用连贯接口来建立 mock 对象sql
<?php namespace DesignPatterns\Structural\FluentInterface; class Sql { /** * @var array */ private $fields = []; /** * @var array */ private $from = []; /** * @var array */ private $where = []; public function select(array $fields): Sql { $this->fields = $fields; return $this; } public function from(string $table, string $alias): Sql { $this->from[] = $table.' AS '.$alias; return $this; } public function where(string $condition): Sql { $this->where[] = $condition; return $this; } public function __toString(): string { return sprintf( 'SELECT %s FROM %s WHERE %s', join(', ', $this->fields), join(', ', $this->from), join(' AND ', $this->where) ); } }
<?php namespace DesignPatterns\Structural\FluentInterface\Tests; use DesignPatterns\Structural\FluentInterface\Sql; use PHPUnit\Framework\TestCase; class FluentInterfaceTest extends TestCase { public function testBuildSQL() { $query = (new Sql()) ->select(['foo', 'bar']) ->from('foobar', 'f') ->where('f.bar = ?'); $this->assertEquals('SELECT foo, bar FROM foobar AS f WHERE f.bar = ?', (string) $query); } }
PHP 互联网架构师 50K 成长指南+行业问题解决总纲(持续更新)服务器
面试10家公司,收获9个offer,2020年PHP 面试问题架构
★若是喜欢个人文章,想与更多资深开发者一块儿交流学习的话,获取更多大厂面试相关技术咨询和指导,欢迎加入咱们的群啊,暗号:phpzh(君羊号码856460874)。并发
内容不错的话但愿你们支持鼓励下点个赞/喜欢,欢迎一块儿来交流;另外若是有什么问题 建议 想看的内容能够在评论提出