Бага или фича PHPStorm, которая сломала мне проект?

ChAk

Новичок
Что бы понять, о чем я, делаем простой эксперимент

Создаем файл 1.php
var_dump($id);

Создаем файл 2.php
$id = 2;

Создаем файл 3.php
$id = 3;

Все этого достаточно что бы у phpstorm запутался и сломал ваш проект.
IDE связывает $id в 1 файле с $id во 2 файле. Это первый баг, так как эти файлы никак не связаны.
При этом $id в 1 файле никак не связан с $id в 3 файле. Второй баг, если первый не баг, а фича.
Тоесть при любом раскладе здесь явный баг.
Как ломается проект? Если еще не догадались, очень просто переименовываем $id c помощью рефакторинга в 1 файле, он так же меняется во 2, но не меняется в 3. Как бы не был устроен у вас проект, это его сломает.

Вопрос: Может быть я и что то не так делаю?
 

Absinthe

жожо
У меня в паре шаблонов PHP есть (иногда их приходится использовать, например для формирования PDF, docx, xlsx, когда twig уже не поможет, нужна сложная логика, но от этого эти файлы не перестают быть view), но он считает переменные неопределенными, пока я их не помечу @var.
 

ChAk

Новичок
Да добавление
/** @var $id */
в начале каждого из файлов решает проблему. Именно так я уже давно и делаю, поэтому даже не знал про эту проблему, а тут вернулся к легаси проекту где было нужно кое что исправить и столкнулся
 

Absinthe

жожо
Ну это логично, что ты должен помечать переменную объявленной.
Но в чем тогда проблема?
PHPStorm все правильно делает.
 

AmdY

Пью пиво
Команда форума
Добавь шаблоны в исключения или сделай для них другое расширение. У рефакторинга есть preview как раз чтобы избегать подобного.
Тем более переменные действительно связанные и ты можешь таким образом перебить переменную если подключишь другой шаблон или в случае рекурсивного инклуда.
 
Сверху