[编写用于处理另一个函数输出的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模式?)。
但是,尽管阅读了这个主题,但我仍然不确定依赖注入如何在php或javascript函数中工作(大部分解释涉及编程语言,例如C++
和OOP概念,例如Classes
,而我处理PHP和javascript中的第三方函数)。
是否有[[任何方式来构造我的代码,以便以任何重要方式更新myFunctionA()
都不需要我也更新myFunctionB()
(和all other调用myFunctionA()
的函数) -例如myFunctionC()
,myFunctionD()
,myFunctionE()
等)?
myFunctionH()
要求myFunctionG()
要求myFunctionF()
而又要求myFunctionA()
怎么办?我不想现在更新myFunctionA()
意味着必须再更新三个功能(F
,G
和H
)。尝试回答:
我目前能想到的最佳答案-这可能不是
最佳实践
答案,因为我尚不知道是否存在与我在上述问题中描述的问题相对应的形式问题-以下是我对设置的介绍:我有两个(不可变的)函数: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_1()
要求由myFunctionA__v2_0()
返回的对象
myFunctionB__v1_0()
要求由myFunctionA__v1_0()
返回的对象immutable
myFunctionB__v1_0()
要求myFunctionA__v2_0()
返回对象的示例为结尾。我不知道我是否采用正确的方法,但这是我到目前为止提出的最佳方法。我有两个函数:myFunctionA()和myFunctionB()。 myFunctionA()返回一个Object,该Object包含具有字符串值的键Page_Type。 myFunctionB()处理......>
找出myFunctionA()的逻辑输出是什么,将该协定编码为一个对象,并将所需的数据转换为该格式。这样,即使您在myFunctionA()中获取数据的方式发生了变化,也只需更新一次转换即可。
最佳实践
以上是关于[编写用于处理另一个函数输出的PHP函数时使用哪种设计模式?的主要内容,如果未能解决你的问题,请参考以下文章