代码之家  ›  专栏  ›  技术社区  ›  Matthieu Napoli

PHP中API的最佳实践:函数还是类?

  •  3
  • Matthieu Napoli  · 技术社区  · 15 年前

    在我公司,我们开发了一些应用程序。我们必须为一个应用程序(比如应用程序A)创建一个API,以便其他应用程序可以使用它(一个ITS数据)。

    问题是:我们已经为应用程序A的模型开发了PHP类,如果我们想要创建一个API,我们应该:
    -重新使用这些类(API的函数太多,太重…)
    -创建一个包含一些基本函数的PHP类,它接受输入并只返回原始值(如字符串、数组…非复杂类)
    -创建另一组PHP类,更简单,并且设计为只供外部应用程序使用(因此只便于获取数据)

    通常,API是第二个解决方案(例如,与PHP一起使用,而不是作为Web服务使用),但我发现我们进行了复杂而有用的类建模太糟糕了,然后我们将其拆分为函数、字符串和数组。 在我看来,第三个似乎是妥协,但我的一个同事坚持认为这不是API。太糟糕了…

    你怎么认为?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Daff    15 年前

    从体系结构的角度来看,解决方案3可能是最好的。基本上你用的是 Facade Design Pattern 简化您的API。因为我现在正在处理它:在 Patterns Of Enterprise Application Architecture 这种方法被描述为 service layer 这是完全有意义的,因为您不想让任何用户(即处理您的API的任何人)暴露在比实际需要或期望的更复杂的环境中。

    这包括使用最简单的接口和传输对象(如果有意义,则为原始值)。一旦通过远程服务(如WebService)调用Facade,您最终将不得不将repsons和请求分解为原始值(数据容器)。

        2
  •  0
  •   Jeffrey Hines    15 年前

    构建一组外观类,以简化公共API。

        3
  •  0
  •   StasM    15 年前

    创建一些薄包装器,在原始类上实现更简单的API。不要在包装器中重新实现任何业务逻辑——这会在任何逻辑发生变化时给您带来麻烦,因为您肯定会失去对哪个部分进行了修改,而哪些部分没有进行修改的跟踪。保持外部输入/输出的简单性,如果您需要比字符串更复杂的东西,请使用XML或JSON来处理结构化数据,但是尽量避免太复杂-如果您有两个东西要传递,两个查询参数可能比一个包含两个字段的结构要好得多。

    这就是“正面”图案。

        4
  •  0
  •   enricog    15 年前

    我也会说,看看正面的图案。 构建一组外观类,这些类只提供真正需要公开的功能。这些类当然会使用您当前的核心类。

    这也为您提供了一个优势,即如果您更改了核心类,就不必更改API。

    推荐文章