如何在PHP中使用接口和神奇的方法

2022-08-31 01:12:17

我想使用接口,但我的一些实现依赖于神奇的方法,例如__invoke和__call。我必须从接口中删除可能被神奇地调用(在任何实现中)的方法的签名。这导致了反模式空接口(是的,我只是编造的)。

如何在PHP中结合接口和神奇的方法?


答案 1

让实现中的所有接口方法调度到 。它涉及许多蹩脚的剪切和粘贴工作,但它有效。__call()

interface Adder {
    public function add($x, $y);
}

class Calculator implements Adder {
    public function add($x, $y) {
        return $this->__call(__FUNCTION__, func_get_args());
    }

    public function __call($method, $args) {
        ...
    }
}

至少每种方法的主体可以相同。;)


答案 2

推荐