Function 创建函数包装器

Function 创建函数包装器,function,wrapper,Function,Wrapper,我知道有很多关于函数包装的问题/答案。 让我加上我的 我有一个函数,我们称之为draw\u this($arg1,$arg2),它被调用,比如说38个不同的位置 后来证明,draw_this()只有在添加$arg3时才能正常工作。所以draw_this()现在看起来像:draw_this($arg1,$arg2,$arg3) 但是,必须始终提供$arg3。为了使长话短说,一个可能的,但在我看来相当糟糕的解决方案是创建一个包装函数, “方法1”: 更糟糕的是,“方法2”: 我真正不喜欢这些解决方案

我知道有很多关于函数包装的问题/答案。 让我加上我的

我有一个函数,我们称之为
draw\u this($arg1,$arg2)
,它被调用,比如说38个不同的位置

后来证明,draw_this()只有在添加
$arg3
时才能正常工作。所以draw_this()现在看起来像:
draw_this($arg1,$arg2,$arg3)

但是,必须始终提供
$arg3
。为了使长话短说,一个可能的,但在我看来相当糟糕的解决方案是创建一个包装函数, “方法1”:

更糟糕的是,“方法2”:

我真正不喜欢这些解决方案的原因是它们(至少在我看来)破坏了封装的原理,而封装有太多的优点,无法摆脱(或者我在这里错了,因为每次都必须提供信息?)。方法1至少“有点”保持了封装。但是,它删除了查看
draw\u this()
的真实外观的功能(因为它是用三个参数而不是两个参数调用的)

然而,我觉得我可能会错过这里的一个设计原则,我还不知道如何以一种好的/干净的方式正确解决这种情况。你能告诉我什么是一个好的解决方案吗?(主要问题是在所有38个位置都必须更改功能等)

提前谢谢


p、 很抱歉,我忘了补充说,
$arg3
始终是相同的。因此它不会根据上下文而改变。但是,一切都是在过程环境中完成的。解决方案?:/

好的。由于我在过程环境中工作,我实际上决定采用“方法2”。如果出现任何重大问题,我可能会在这里报告

function draw_this_wrapper($arg1, $arg2){
   $arg3 = include($arg3);
   draw_this($arg1, $arg2, $arg3);
}
draw_this($arg1, $arg2){
   $arg3 = include($arg3);
   ...
}