我想使用接口,但我的一些实现依赖于魔术方法,例如 __invoke 和 __call。我必须从接口中删除可能被魔法(在任何实现中)调用的方法的签名。这导致了反模式 Empty Interface(是的,我只是编造的)。
如何在 PHP 中结合接口和魔术方法?
我想使用接口,但我的一些实现依赖于魔术方法,例如 __invoke 和 __call。我必须从接口中删除可能被魔法(在任何实现中)调用的方法的签名。这导致了反模式 Empty Interface(是的,我只是编造的)。
如何在 PHP 中结合接口和魔术方法?
将实现中的所有接口方法分派到__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) {
...
}
}
至少每个方法的主体可以是相同的。;)