|
|
2
3
下面是我用PHP从Python模仿装饰器的方法。
输出:
使用此实现,您还可以对匿名函数执行类似的操作:
输出:
最后,如果你愿意的话,你甚至可以这样做。
输出:
有了上面的构造,如果需要的话,可以将变量传递给内部函数或包装器。下面是一个匿名内部函数的实现:
如果没有匿名函数,它的工作原理将完全相同:
最后,如果需要修改包装器或包装器中的变量,只需通过引用传递变量。 无参考:
输出:
参考文献:
输出:
这就是我现在所拥有的,它在很多情况下非常有用,如果你想的话,你甚至可以把它们包装多次。 |
|
|
3
1
也许你在找
既然php 5.3,你甚至可以说:
在你编辑完你的问题之后,我会说,不,这是不可能的,但是有一些方法,请看这个问题: how to implement a decorator in PHP? |
|
|
4
1
用PHP中的函数不能这样做。在其他动态语言中,比如Perl和Ruby,您可以重新定义以前定义的函数,但是当您尝试这样做时,PHP会抛出一个致命的错误。 在5.3中,可以创建 anonymous function 并将其存储在变量中:
或者,您可以使用传统的装饰器模式和/或工厂并使用类。 |