2013-04-13 3 views
3

Насколько я могу видеть (просмотр популярного PHP-код в GitHub) есть много людей, не использующих string interpolation:Есть ли причина, почему не используется строковая интерполяция в PHP?

$loader->load($config['resource'].'.xml'); 

Versus:

$loader->load("{$config['resource']}.xml"); 

Есть ли какая-либо причина (например, выступление) за не использование строковой интерполяции?

+0

http://stackoverflow.com/questions/13620/speed-difference-in-using-inline-strings-vs-concatenation-in-php5 – monkeyinsight

+0

Уверены ли вы? Мое видение - это обратное: многие люди * используют строчную интерполяцию *, часто даже с видом писем, которые используют слишком много символов, чтобы выполнить задание интерполяции. Хорошим примером этого является и ваш вопрос. –

ответ

4

Нет, нет никаких причин, чтобы не использовать строку интерполяция в PHP.

Хотя есть крошечные различия в how PHP handles string interpolation and concatenationвнутренне, эти различия настолько малы, что они едва измеримые на практике, и, следовательно, должны быть оставлены на PHP для обработки.

Если или когда вы видите контрольные показатели, для работы со строками в PHP, то искать, как правило, является счетчиком итераций. Чтобы получить измеримые результаты, вам нужно установить n на некоторое сильно преувеличенное значение, которое никогда не происходит в реальном мире.

Чтобы обернуть, оптимизация работы с строками в PHP не имеет большого смысла. Вместо этого вам следует сосредоточиться на проблемах, которые действительно оказывают заметное влияние на производительность вашего сайта; кеширование, материал базы данных и, особенно, front end.

+1

Жаль, что я не смог бы это сделать дважды. Это нужно сказать гораздо больше, чем было. – cHao

+1

На самом деле это не * истина, когда дело доходит до * реальных * тестов, которые не показывают никакой разницы. Тем не менее, я полностью на вашей стороне по этому вопросу в целом. Существуют и другие измеримые случаи, которые по-прежнему полностью пренебрежимо малы. –

2

Есть ли какая-либо причина (т. Е. Действия) для использования интерполяции строк?

Не Эксплуатация, определенно.

Единственные причины - читаемость и удобство использования. То есть в данном примере вторая строка имеет препятствия в виде фигурных скобок, которые либо бесполезны, и делают код более трудным для чтения. Зачем их использовать?

Однако, если бы это был

"$somevar.xml" 

было бы просто дело вкуса, чтобы написать так или с конкатенации

$somevar.".xml" 
-1

Нет, это не так, но некоторые люди считают, что это плохой код. Но я не согласен с этим аргументом. Он считает, что код выглядит намного яснее, и это одна вещь, которую я очень люблю в PHP.

На данный момент я не могу найти контрольный тест, но я помню результаты. Результаты почти равны (+/- 0,0001 на 100 взаимодействий).

+0

Зачем мой голос? – Matt3o12

+0

Кто-то, вероятно, не согласен с вашим мнением о том, что второй «яснее». Я делаю также, в этом случае (скобки - боль), но э. – cHao

0

Большую часть времени это только вопрос вкуса. И я не уверен, что вы действительно наблюдали общее предпочтение здесь, но я уже написал это в комментарии.

Что касается производительности обеспокоен:

Интерполяция становится более эффективным, чем больше интерполируется.[ref]

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

+0

Разве вы не * просто * комментарий есть *** нет *** отличия в производительности от другого ответа ...? :) – cHao

+0

@cHao: Да, теперь я написал ответ своим собственным, видя, как трудно правильно сформулировать это: я имел в виду, что вы не можете сказать, какая из двух быстрее. Я также удалил этот комментарий, потому что он слегка вводит в заблуждение, так как вы прокомментировали это. –

Смежные вопросы