Intereting Posts
Как предотвратить получение двойных / дублированных форм в CakePHP? Поля формы POSTing с одинаковым атрибутом имени Как отображать php-код и html-теги в виде текста на веб-странице UploadFile с значениями POST с помощью WebClient Какой хэш используют сеансы PHP при хранении идентификатора? Как запустить sql-запрос в solr Как сделать cookie с PHP Как очистить определенные данные от царапин с помощью простого анализатора html dom Есть ли способ отправить параметры в функцию обратного вызова, не создавая сначала мою собственную функцию? PhpExcel перестает работать после установки 20 типов ячеек Правильное выполнение оболочки в PHP Возвращение большого количества строк в CakePHP & MySQL Ошибка переопределения PHP с ошибкой при смещении, работает на некоторых серверах, а не на других Сделать пространства имен обратно совместимыми в PHP Разделить временной диапазон на части по другим временным диапазонам

Есть ли способ указать, что класс имеет магические методы, определенные для каждого метода в другом классе?

Есть ли способ документировать, что у определенного класса есть магические методы для каждого метода, определенного в другом классе?

Я использую PhpStorm, поэтому я был бы доволен любым решением, которое автоматически запустит автозаполнение.

class A { // a bunch of functions go here... } /** * Class B * What should go here to make it work??? */ class B { private $aInstance; public function __construct() { $this->aInstance = new A(); } public function __call($name, $arguments) { // TODO: Implement __call() method. if(method_exists($this->aInstance, $name)) { return $this->aInstance->{$name}(...$arguments); } throw new BadMethodCallException(); } // a bunch more functions go here... } 

Solutions Collecting From Web of "Есть ли способ указать, что класс имеет магические методы, определенные для каждого метода в другом классе?"

Правильное решение – использовать поддерживаемые @method PHPDoc @method . Таким образом, он будет работать и в других редакторах / IDE, которые поддерживают PHPDoc и понимают такой стандартный тег.

Этот подход требует, чтобы каждый метод указывался отдельно. Подробнее об этом в другом вопросе / ответе StackOverflow: https://stackoverflow.com/a/15634488/783119 .


В текущих версиях PhpStorm вы можете использовать не-в-PHPDoc-спецификации (и, возможно, специфичные для PhpStorm) теги @mixin .

Добавление @mixing className в комментарии PHPDoc для вашего целевого класса должно выполнить эту работу за вас.

 /** * Class B * * @mixin A */ class B { 

В принципе, тег @mixin делает то, что делают фактические черты PHP.

Обратите внимание, что нет гарантии, что поддержка такого тега не будет удалена в какой-то момент в будущем, хотя это маловероятно.