[编写用于处理另一个函数输出的PHP函数时使用哪种设计模式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[编写用于处理另一个函数输出的PHP函数时使用哪种设计模式?相关的知识,希望对你有一定的参考价值。

我有两个功能:myFunctionA()myFunctionB()

[myFunctionA()返回一个Object,它包含具有字符串值的键Page_Type

[myFunctionB()处理Object返回的myFunctionA()中的许多条目,包括Page_Type及其字符串值。

稍后,myFunctionA()被更新,因此它不再返回包含键Page_Type的对象,而是返回键Page_Types-具有数组值。

因此,myFunctionB()现在将也需要更新-它将不再处理作为字符串的Page_Type,而是处理作为数组的Page_Types

如果我理解正确(但可能不是),则以上是Dependency Request的示例,并且可以通过(我认为)部署Dependency Injection模式来避免它引发的大量重构。 (或者甚至可能是Service Locator模式?)。

但是,尽管阅读了这个主题,但我仍然不确定依赖注入如何在phpjavascript函数中工作(大部分解释涉及编程语言,例如C++和OOP概念,例如Classes,而我处理PHP和javascript中的第三方函数)。

是否有[[任何方式来构造我的代码,以便以任何重要方式更新myFunctionA()都不需要我也更新myFunctionB()(和all other调用myFunctionA()的函数) -例如myFunctionC()myFunctionD()myFunctionE()等)?

如果myFunctionH()要求myFunctionG()要求myFunctionF()而又要求myFunctionA()怎么办?我不想现在更新myFunctionA()意味着必须再更新三个功能(FGH)。


尝试回答:

我目前能想到的最佳答案-这可能不是

最佳实践

答案,因为我尚不知道是否存在与我在上述问题中描述的问题相对应的形式问题-以下是我对设置的介绍:
我有两个(不可变的)函数:myFunctionA__v1_0()myFunctionB__v1_0()

myFunctionA__v1_0()返回一个包含键的对象Page_Type具有字符串值。

myFunctionB__v1_0()处理对象中的许多条目由myFunctionA__v1_0()返回,包括Page_Type及其字符串值。

[后来,myFunctionA__v1_0()仍然存在,但也接在myFunctionA__v2_0()之后,返回包含键Page_Types的对象-该对象具有数组值。

为了使myFunctionB访问myFunctionA__v2_0()返回的对象,现在还需要有一个myFunctionB__v1_1(),能够处理数组Page_Types

这可以总结为:

    [myFunctionB__v1_0()要求由myFunctionA__v1_0()返回的对象
  • [myFunctionB__v1_1()要求由myFunctionA__v2_0()返回的对象
  • 由于每个函数在正式命名后都变为

    immutable

  • ,所以从不发生]是我们以一个myFunctionB__v1_0()要求myFunctionA__v2_0()返回对象的示例为结尾。我不知道我是否采用正确的方法,但这是我到目前为止提出的最佳方法。

    我有两个函数:myFunctionA()和myFunctionB()。 myFunctionA()返回一个Object,该Object包含具有字符串值的键Page_Type。 myFunctionB()处理......>

    答案
    依赖注入在OOP上下文中更相关。但是,我在这里要做的主要事情是停止思考返回可用的内容,并开始考虑这两种方法如何一起工作以及它们的合同是什么。

    找出myFunctionA()的逻辑输出是什么,将该协定编码为一个对象,并将所需的数据转换为该格式。这样,即使您在myFunctionA()中获取数据的方式发生了变化,也只需更新一次转换即可。

    另一答案
    似乎您已经通过将返回类型从字符串更改为数组来破坏了myFunctionA和myFunctionB之间的接口。我认为DI无法提供帮助。
    另一答案
    我目前能想到的最佳答案-这可能不是

    最佳实践

    以上是关于[编写用于处理另一个函数输出的PHP函数时使用哪种设计模式?的主要内容,如果未能解决你的问题,请参考以下文章

    PHP高级教程-文件

    printf函数怎么使用?

    php中处理字符串的常见函数

    在 Python 中调用 C 函数

    20170622日行一记之PHP函数

    C++中printf() 使用方法?