【发布时间】:2018-04-01 01:06:01
【问题描述】:
我正在实现一个装饰器模式:
class DecorateMe
{
public function a() { }
public function b() { }
public function c() { }
}
class Decorator
{
/**
* @var DecorateMe
*/
private $beignDecorated;
public function __construct(DecorateMe $beignDecorated)
{
$this->beignDecorated = $beignDecorated;
}
public function c() { }
public function __call($name, $parameters)
{
return $this->beignDecorated->$name($parameters);
}
}
$obj = new Decorator(new DecorateMe());
$obj->a();
$obj->b();
$obj->c();
所有调用都有效,但 IDE 将仅提供 c() 方法。如何使其提供所有a()、b()、c()?
【问题讨论】:
-
AFAIK,IDE 不支持魔法方法。除了实际执行您的代码之外,您的 IDE 无法知道
Decorator类中是否存在a()和b(),除非尝试解析您的__call()方法并对其进行逆向工程.