最近我开始更频繁地在 PHP 中使用装饰器来在运行时修改对象的行为。我的问题主要是懒惰,我们有许多带有大量方法的遗留类,而且必须为每个装饰器类重写/覆盖所有这些方法的想法让我很难过。有谁知道可以为我编写这些装饰器的命令行实用程序吗?
或者也许有更好的方法来解决这个问题?
最佳答案
根据这个问题,我了解到您懒得添加其他方法,例如那些不修 retrofit 饰实例的。为此,您可以使用魔术方法 __call
public function __call($method, $args) {
return call_user_func_array(
array($this->decoratedInstance, $method),
$args
);
}
您还可以根据需要添加__callStatic
、__get
和__set
。但请注意,魔术拦截器总是会带来一些性能损失。如果你有很多嵌套的装饰器,这可能会很明显。如有疑问,请进行基准测试。
关于PHP 装饰器编写器脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857644/