假设我们现在要给 BaseClass 添加更多的功能:
/**
* @mixin BaseClass
* @extends parent<BaseClass>
* ↑ 添加这些 PHPDoc 注释会很有帮助,它们让 IDE 给出正确的提示
*/
class MyClassPlus extends BaseDecorator {
// 务必手动调用一下这个方法,以确保静态方法被代理
public static function __callStatic($method, $args) {
return self::callStaticOn(BaseClass::class, $method, ...$args);
}
// 然后就可以在这里添加你需要的实例方法了
public function someMethod() {
// do something
}
}现在,你可以快乐地在任意位置使用:
$polyfill = new MyClassPlus($instance);
$polyfill->someMethod();