Phpdoc для украшения класса?

Я реализую шаблон декоратора:

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

Решение

Вы могли бы использовать уровень класса @method php doc аннотация.

/**
* @method a()
* @method b()
* @method c();
*/
class Decorator { ... }

https://docs.phpdoc.org/references/phpdoc/tags/method.html

Вы также можете автоматизировать это с помощью @mixin аннотации, если ваша IDE поддерживает это (т.е. PHPStorm поддерживает). Официально, эта аннотация не поддерживается PhpDoc.

/**
* @mixin DecorateMe
*/
class Decorator { ... }
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]