Двойные и одинарные кавычки в php
Я сторонник красивого и оптимизированного кода, хоть и не всегда у меня получается следовать всем правилам «хорошего тона» в программировании.
Сейчас же речь пойдет о правильном использовании двойных и одинарных кавычек в php. Перед тем, как начать писать пост, я бегло просмотрел имеющиеся у меня книги по php, и, что странно, ни в одной не увидел правильного использования кавычек. Почему – для меня загадка. Обвинять авторов в дилетантстве нет ни малейшей возможности, книги далеко не для «чайников». Может быть просто не хотели акцентировать на этом внимание, дескать кому надо, тот сам разберется.
Кавычки, что логично, бывают одинарными и двойными. Различие их использования в php заключается в следующем. Строку, заключенную в одинарные кавычки, интерпретатор php выводит как есть, заключенную же в двойные кавычки парсит на наличие в ней переменных и, найдя таковые, подставляет их значения.
- <?php
- $var = 1;
- echo '$var'; //на экран выведется "$var"
- echo "$var"; /*на экран выведется цифра 1, т.к. вместо переменной подставляется ее значение*/
- ?>
Следовательно, если нам надо вывести текст «как есть», то используем одинарные кавычки. Если необходимо подставить вместо переменной ее значение – двойные (если переменная только одна, то кавычки можно и вовсе опустить). Часто можно встретить такой код:
- <?php
- echo "Какой-то текст";
- ?>
Выводится просто текст. Но в коде он по какой-то неведомой причине заключен в двойные кавычки, что заставляет интерпретатор парсить его на наличие переменных. Правильным будет заключить текст в одинарные кавычки.
Рассмотрим тривиальную задачу вывода переменной в составе текста, в том числе и с использованием html кода.
- <?php
- $date;
- echo "Сегодняшняя дата: <strong>$date</strong>";
- ?>
Все выводится хорошо, текст и выделенная жирным дата, которая подставляется вместо переменной. Но необходимо помнить две вещи. Первое, это особенность интерпретатора: конкатенация строк происходим намного быстрее и требует меньше ресурсов, нежели синтаксический анализ строк. И второе - не стоит забывать про парадигму программирования «разделяй и властвуй». Не надо мешать все в одно, гораздо правильнее будет разделить текст на две части – требующую и не требующую парсинга интерпретатором. Таким образом, пример выше стоит записать так:
- <?php
- $date;
- echo 'Сегодняшняя дата: <strong>'.$date.'</strong>';
- ?>
Естественно, следовать этому правилу (заключать все, что не требует парсинга, в одинарные кавычки) надо не только при выводе текста, но и при присвоении значений строковым переменным:
- <?php
- $svar = 'Значение переменной';
- ?>
Или, например, при использовании строк при передаче аргументов функции:
- <?php
- function sum_str($first_string, $second_string) {
- return $first_string.' - '.$second_string;
- }
- $var = 'Параметр';
- echo sum_str($var, 'значение'); /*на экран выведется строчка "Параметр - значение"*/
- ?>
И хотя на современных компьютерах выигрыш во времени интерпретирования кода в зависимости от использования одинарных или двойных кавычек будет фактически незаметен, особенно в небольших скриптах, стоит все-таки изначально приучаться себя писать грамотный код, это намного легче, чем потом переучиваться.

Комментарии
Спрашивается, а нафига вообще было реализовано в PHP возможность вывода строк в двойных кавычках? только лишь для сокращения кода?:)
Ну сами по себе строки, в которых интерпретатор ищет переменные, иногда могут быть полезны. Например, когда строка формируется динамически и мы не знаем, содержит она переменные или нет, тогда проще не самостоятельно парсить ее, а заключить в двойные кавычки. Так, конечно, сходу не придумать примеры, в которых без использования строк в двойных кавычках не обойтись, но они наверняка есть. А вот использование двойных кавычек везде подряд - зло, даже читабельность кода снижается, приходится просматривать всю строку на наличие в ней переменных, а так она отделена от основного текста и сразу бросается в глаза.
Учту, запомню.
Да... не знал, спасибо за статью :)
Статья хорошая, хоть буду теперь знать. А то кого не спросишь - тот прям гений, а толком объяснить ничего не может.
Спасибо, помогло :)
А я никак не мог понять как вывести текст "как есть" в хтмл страницу из пхп-файла, спасибо огромное
Отправить комментарий