用于装饰类的Phpdoc?

时间:2017-10-19 21:37:28

标签: php decorator

我实现了一个装饰模式:

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()

1 个答案:

答案 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 { ... }