【问题标题】:How to write search class?如何编写搜索类?
【发布时间】:2017-10-13 00:48:36
【问题描述】:

我尝试编写 OOP 类,通过一些传入参数进行搜索。 我可以按位置、类别、名称和其他内容进行搜索。 如何让这门课更专业、更抽象?

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

private function search($request)
{
    // TODO
}

$request 可以包含上述任何参数。

我不喜欢做:

if($request->category){

} else if($request->location){

} else if($request->name){

} ... etc

【问题讨论】:

    标签: php design-patterns architecture


    【解决方案1】:

    您需要做的是获取一个查询构建器(使其或我们从 packagegist 中存在),因为您最终将希望通过多个参数进行搜索。

    至于代码的一般组织,我实际上会让它更像一个服务,即使用某种类型的table data gateway 作为数据源。因为我假设,最初您将使用 SQL Server 作为您的搜索后端,但如果项目增长,您应该将其迁移到 SphinxSearchElasticSearch 之类的东西,并且具有单独的抽象将使迁移更容易。

    【讨论】:

    • query-builder 你的意思是设计模式?
    • 查询构建器不是模式,而是库。
    • 我使用 Laravel。并且想要不使用库来重建代码。
    • Laravel 确实有一个 query builder。不过,我可能会为此使用Doctrines DBAL(不是完整的 Doctrine)……创建对单体框架的硬依赖似乎有些短视(特别是因为 Laravle 的查询构建器似乎引入了全局状态)。
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多