Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何编写搜索类?_Php_Design Patterns_Architecture - Fatal编程技术网

Php 如何编写搜索类?

Php 如何编写搜索类?,php,design-patterns,architecture,Php,Design Patterns,Architecture,我试着编写OOP类,通过一些传入参数进行搜索。 我可以做搜索的位置,类别,名称和其他事情。 如何使这门课更专业,更抽象 现在,类中只有一个方法接受请求: private function search($request) { // TODO } $request可以包含上述任何参数 我不喜欢做: if($request->category){ } else if($request->location){ } else if($request->name){ }

我试着编写OOP类,通过一些传入参数进行搜索。 我可以做搜索的位置,类别,名称和其他事情。 如何使这门课更专业,更抽象

现在,类中只有一个方法接受请求:

private function search($request)
{
    // TODO
}
$request可以包含上述任何参数

我不喜欢做:

if($request->category){

} else if($request->location){

} else if($request->name){

} ... etc

您需要做的是获得一个查询生成器(使它或我们从PackageGist中存在),因为您最终将希望通过多个参数进行搜索


至于代码的一般组织,我实际上会让它更像一个服务,即使用某种类型的服务作为数据源。因为我假设,最初您将使用SQL server作为搜索后端,但如果project增长,您应该将其迁移到类似于或的位置,并且使用单独的抽象将使迁移更容易。

query builder
您是指设计模式吗?query builder不是模式,而是库。我使用Laravel。并且希望不使用库来重建代码。Laravel确实有一个。虽然,我可能会使用(而不是完整的教义)为这。。。在单片框架上创建硬依赖似乎有些短视(特别是因为Laravle的查询生成器似乎引入了全局状态)。