PHP:运行另一个类方法时运行类方法?

Tim*_*nen 0 php methods class listener

PHP:运行特定类方法时运行函数

我想要的是在运行类方法时运行一些额外的函数而不改变已经存在的类.

怎么样?

Gor*_*don 5

有装饰者:

class MyClassDecorator
{
    protected $decoratedInstance;

    public function __construct($decoratedInstance)
    {
        $this->decoratedInstance = $decoratedInstance;
    }

    public function methodNameInOriginalClass()
    {
        $this->decoratedInstance->methodIWantToRunBefore();
        $this->decoratedInstance->methodNameInOriginalClass();
        $this->decoratedInstance->methodIWantToRunAfter();
    }

    public function __call($method, $args)
    {
        if (method_exists($this->decoratedInstance, $method)) {
            return call_user_func_array(
                array($this->decoratedInstance, $method), 
                $args
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以上假定您要调用的方法public位于$decoratedInstance.