我实现了一个装饰模式:
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()
?
答案 0 :(得分:2)
您可以使用类级@method
php doc注释。
/**
* @method a()
* @method b()
* @method c();
*/
class Decorator { ... }
https://docs.phpdoc.org/references/phpdoc/tags/method.html
如果您的IDE支持此功能(即PHPStorm支持),您还可以使用@mixin
注释自动执行此操作。官方的,PhpDoc不支持这个注释。
/**
* @mixin DecorateMe
*/
class Decorator { ... }