vshemarov
@vshemarov

Как объявить "магические" методы в PhpStorm?

Исходные данные — есть проект, основанный на стороннем движке. И в этом движке есть механизм автоподгрузки модулей при вызове их методов. Проект делается в PhpStorm. И хотелось бы, не трогая исходных файлов движка, создать файл с явным описанием вызовов всех возможных методов.

Например, есть класс Foo (в файле Foo.class.php):

class Foo {
function A() {
$this->Bar_B(); // здесь автоматически подгружается класс Bar и вызывается его метод B()
}
}

Мне хотелось бы не трогать файл Foo.class.php, но где-то описать типа:
/**
* @method int Bar_B() autoloaded method
*/

Не хочу писать это прямо в Foo.class.php, т.к. движок периодически обновляется, и трогать его «родные» файлы — это как-то не айс. Никто не знает, в PhpStorm возможны какие-то иные пути решения этой проблемы?
  • Вопрос задан
  • 3072 просмотра
Пригласить эксперта
Ответы на вопрос 3
taliban
@taliban
php программист
Тупой вариант конечно, но все же:

/** @var $tmp Bar; */
$tmp = $foo->A();
$tmp->//autocomplite for Bar goes here
Ответ написан
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Вообще описание методов в отдельных файлах можно задавать — сделайте ctrl+click на какую-нибудь встроенную функцию, но как свой такой файл подключить я не в курсе.
Ответ написан
Комментировать
Не совсем прямой ответ на вопрос, скорее обход проблемы

>Не хочу писать это прямо в Foo.class.php, т.к. движок периодически обновляется, и трогать его «родные» файлы — это как-то не айс.

Нормальные VCS вполне обычно справляются с добавлением пары строк в автоматическом режиме. Сам сейчас работаю над форком одного открытого проекта. Проект на SVN, я работаю в Mercurial(hg) — за месяц было где-то 40 обновлений оригинала — ручное вмешательство в процесс объединения правок оригинала и моих понадобился только один раз и то по какому-то пустяку типа я поменял дефолтный цвет на свой, а они потом поменяли дефолтный и hg не сообразил какой оставить.

Если же оригинальный движок вы используете как библиотеку, то есть его вообще не трогаете, а инклудите его файлы в свой, то вместо форка можно сделать субрепозиторий. А после того как добавите комменты, так ещё послать их авторам оригинального движка, может добавят и проблема исчезнет :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы