出于测试目的,我正在实现一个Adapter pattern,我想用两个不同类的方法来输入提示适配器的返回,我该如何实现呢?
class Foo {
public function somethingOnlyFooHave() {};
}
class Adapter {
protected $handler;
public function __construct(object $handler) {
$this->handler = $handler;
}
public function __call($name, ...$args) {
$this->handler->$name($args);
}
public function somethingOnlyTheAdapterHave() {}
}
$foo = new Adapter(new Foo);
// How can I get type-hinting for both the Adapter and Foo?
$foo->somethingOnlyFooHave();
$foo->somethingOnlyTheAdapterHave();发布于 2019-07-26 01:23:51
似乎PHP本身不能做到这一点,但是如果您使用的是PHPStorm 2018.3+,那么只要它不在__construct上,您就可以使用联合类型(或交集类型)
class Foo {
public function somethingOnlyFooHave() {}
}
class Adapter {
protected $handler;
public function __construct(object $handler) {
$this->handler = $handler;
}
public function __call($name, ...$args) {
$this->handler->$name($args);
}
/**
* @return Adapter|Foo
*/
public function get() {
return $this;
}
public function somethingOnlyAdapterHave() {}
}
$foo_adapter = ( new Adapter(new Foo) )->get();
// The following methods receives type-hinting:
$foo_adapter->somethingOnlyFooHave();
$foo_adapter->somethingOnlyAdapterHave();有用的链接:
https://stackoverflow.com/questions/57207265
复制相似问题