какой php ide использовать

waza123

Новичок
Проблема была следующая:

Код:
if (preg_match("/something/", $str, $m)){
   // some amount of code here

      if(preg_match("/zzz/", $str2, $m)){
       // здесь получилось так что я перезаписал 
верхнию переменную $m , и дальше весь мой
код пошел лесом..
вопрос, какой ide может мне подсказать о том
что я использовал во втором preg_match
переменную которая уже сушествует?
 

WMix

герр M:)ller
Партнер клуба
те другими словами
PHP:
$a=1;
$a=2; // это ты хочешь ошибкой назвать
 

Adelf

Administrator
Команда форума
Вообще есть умные стат анализаторы, которые бы показали, что результат первого раза не был использован. PVS Studio наверняка бы показал. Но это для других языков. PHP в силу его специфичности не силен такими тулзами, но не которые стат анализаторы тоже есть.
Надо бы протестить эту ситуацию. самому стало интересно.

А ответ - никакая иде пока не может быть такая умная чтобы показать ошибка такая.
 

Фанат

oncle terrible
Команда форума
те другими словами
PHP:
$a=1;
$a=2; // это ты хочешь ошибкой назвать
В такой редакции это ошибка, и любая ИДЕ на нее укажет (ну шторм по крайней мере)
А вот это
Код:
$a=1;
$c = $a+1;
$a=2;
Уже не будет ошибкой, и никакая ИДЕ здесь не поможет.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Вообще есть умные стат анализаторы, которые бы показали, что результат первого раза не был использован.
Ты забываешь, что после $matches еще параметры есть, а передать туда константу нельзя никакую, потому что там ссылка. Поэтому есть легитимные варианты, где там всегда будут неиспользуемые переменные.
 

scorpion-ds

Новичок
IDE не знает, что происходит внутри preg_match с переменной $m, идет не присвоение, а передача по ссылке, может так и надо, в каждой из функции проивзести какие-то манипуляции над переменной переданной по ссылке.
 

Adelf

Administrator
Команда форума
@scorpion-ds, в общем случае ты прав. но системные функции можно разобрать
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
дело в том, что код, который привел ТС - частный случай такого:
PHP:
foreach($arr1 as $v){
   // some amount of code here
}
foreach($arr2 as $v){
}
даже не &$v

Аналогичная ситуация с PDOStatement::fetchObject, bindColumn, и так далее.
Это не вопрос ссылок, это вопрос инициализации переменных.
Когда-то в паскале, если переменную не проинициализируешь - в ней оказывался мусор из оперативной памяти

Мы все на это наступали, эта ситуация приводит к серьезным ошибкам, их сложно отловить, и все эти "системные функции разобрать" займет овердохрена времени.
Это школьный курс основ программирования.
 

Фанат

oncle terrible
Команда форума
и все эти "системные функции разобрать" займет овердохрена времени.
Странно, Шторм как-то справляется.
Видимо, взять из библиотечного файла описание функции и увидеть, что переменная передается по ссылке, отнимает не так уж много времени?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
но эта проблема не связана со ссылками, она связана с переменными
 
Сверху