php: Есть ли большие причины, чтобы процитировать все ключи / индексы массивов?

Я выполняю чужой код, и они постоянно избегают избегать их ключей массива.

Например:

$ row_rsCatalogsItems [Имя]

вместо

$ row_rsCatalogsItems [ 'Name']

поэтому я постоянно делаю крошечные изменения ко всему, что касаюсь только для того, чтобы справиться с этой биткой лень. Но теперь мне интересно, есть ли еще большая польза для этого. Я получаю, что он проверяет константы перед тем, как поменять строку (я ненавижу это поведение в php при работе с константами, так как они проверяют на истинность, даже если не определены), но я не уверен, что даже это стоит того, меняя все множество, много экземпляров констант-как-массива-ключей.

Предложения?

Related of "php: Есть ли большие причины, чтобы процитировать все ключи / индексы массивов?"

Существует более чем одна веская причина.

Делать

error_reporting(E_ALL); 

в начале вашего скрипта, и вы сразу увидите все причины.

Забава в стороне, на практике вы могли бы подумать, что это то, что я мог бы избежать. И ты можешь быть прав. Но, как разработчик, вы должны нарисовать линию где-то о том, что является приемлемым взломом, и что является причиной словесного оскорбления. Для меня это особое поведение выходит за рамки этой линии.

Самая непосредственная причина, по которой это плохо, заключается в том, что она делает error_reporting(E_ALL) непригодной для использования. И хорошая практика разработки требует, чтобы сообщались все ошибки, эти уведомления настраивают вас для более сложных кодов и более сложных сеансов отладки.

Обновление: я не рассматривал вопрос о практическом решении существующей ситуации, поэтому я хотел бы сделать это в вашей обуви:

  1. Найдите ответственного человека и убедитесь, что они никогда, никогда не сделают это снова никакими средствами.
  2. Запустите проблемный скрипт и получите все уведомления о неопределенных константах из файла журнала.
  3. Используя поиск и замену регулярных выражений из вашего редактора, попробуйте заменить \[(a-zA-Z_-)\] на ['$1'] (или что-то подобное). Если количество замещений равно количеству уведомлений в файле журнала, вы являетесь золотым. В противном случае попробуйте разделить и покорить, пока не увидите, где не работает регулярное выражение.
  4. Повторите, как требуется для всех других скриптов.

Это не технически правильно делать так. Вероятно, вы должны использовать одинарные кавычки. Он будет использовать меньше циклов процессора и памяти для запуска кода, если вы их исправите. Вы заметите разницу, даже если 1000 из них зафиксированы в одном файле? Возможно нет.

Если вы исправите это, это будет правильно и не будет иметь предупреждений или уведомлений, а не для скорости или использования памяти.

Я бы добавил цитаты. Если ничего другого, убедитесь, что:

  1. Кодируемость кода не уменьшается (а именно, если кто-то считает, что вы используете не константное, а константное значение)
  2. Дополнительные циклы не тратятся на каждую оценку

Сказав это, я понимаю, что время программиста ценно. Таким образом, вы можете опционально отказаться от ленивого кодера и использовать регулярное выражение, например следующее:

 $input = '$row_rsCatalogsItems[Name]'; $str = preg_replace('/(\$[a-zA-Z_]+\[)([a-zA-Z]+)(\])/', '${1}\'${2}\'${3}', $input); echo $str; 

(Возможно, вы захотите выполнить изменения, используя это выражение, чтобы убедиться, что вы меняете правильные вещи;))