Есть ли способ применить новый PhpDoc без переоценки метода, например, у меня есть класс, который:
class GeneralContainer { private $children; public function __construct() { $this->children = $this->CreateChildren(); } protected function CreateChildren() { return new GeneralChildren($this); } /** * @return GeneralChildren */ public function Children() { return $this->children; } }
После переопределения метода «CreateChildren» следующим образом:
class SpecializedContainer extends GeneralContainer { protected function CreateChildren() { return new SpecializedChildren($this); } /** * @return SpecializedChildren */ public function Children() { return parent::Children() } }
Метод «Дети» теперь вернет объект «SpecializedChildren». Но для того, чтобы дать подсказку NetBeans, я обязан также переопределить метод «Дети» и дать ему подсказку с использованием PhpDoc. Есть ли способ дать подсказку NetBeans о том, что базовый метод теперь будет возвращать другой тип без фактического переопределения метода?
Я не думаю, что есть простой способ сделать это. Однако вы можете попробовать использовать тег @method, например
/** * @method SpecializedContainer Children() */ class SpecializedContainer extends GeneralContainer { protected function CreateChildren() { return array(); } }
Вы должны помнить, что этот тег @method должен использоваться для подсказки магических методов, а не для новых типов возвращаемых методов из родительского класса.