Двойные и одинарные кавычки в php

Я сторонник красивого и оптимизированного кода, хоть и не всегда у меня получается следовать всем правилам «хорошего тона» в программировании.

Сейчас же речь пойдет о правильном использовании двойных и одинарных кавычек в php. Перед тем, как начать писать пост, я бегло просмотрел имеющиеся у меня книги по php, и, что странно, ни в одной не увидел правильного использования кавычек. Почему – для меня загадка. Обвинять авторов в дилетантстве нет ни малейшей возможности, книги далеко не для «чайников». Может быть просто не хотели акцентировать на этом внимание, дескать кому надо, тот сам разберется.

Кавычки, что логично, бывают одинарными и двойными. Различие их использования в php заключается в следующем. Строку, заключенную в одинарные кавычки, интерпретатор php выводит как есть, заключенную же в двойные кавычки парсит на наличие в ней переменных и, найдя таковые, подставляет их значения.

  1. <?php
  2. $var = 1;
  3. echo '$var'; //на экран выведется "$var"
  4. echo "$var"; /*на экран выведется цифра 1, т.к. вместо переменной подставляется ее значение*/
  5. ?>

Следовательно, если нам надо вывести текст «как есть», то используем одинарные кавычки. Если необходимо подставить вместо переменной ее значение – двойные (если переменная только одна, то кавычки можно и вовсе опустить). Часто можно встретить такой код:

  1. <?php
  2. echo "Какой-то текст";
  3. ?>

Выводится просто текст. Но в коде он по какой-то неведомой причине заключен в двойные кавычки, что заставляет интерпретатор парсить его на наличие переменных. Правильным будет заключить текст в одинарные кавычки.

Рассмотрим тривиальную задачу вывода переменной в составе текста, в том числе и с использованием html кода.

  1. <?php
  2. $date;
  3. echo "Сегодняшняя дата: <strong>$date</strong>";
  4. ?>

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

  1. <?php
  2. $date;
  3. echo  'Сегодняшняя дата: <strong>'.$date.'</strong>';
  4. ?>

Естественно, следовать этому правилу (заключать все, что не требует парсинга, в одинарные кавычки) надо не только при выводе текста, но и при присвоении значений строковым переменным:

  1. <?php
  2. $svar = 'Значение переменной';
  3. ?>

Или, например, при использовании строк при передаче аргументов функции:

  1. <?php
  2. function sum_str($first_string, $second_string) {
  3.     return $first_string.' - '.$second_string;
  4. }
  5. $var = 'Параметр';
  6. echo sum_str($var, 'значение'); /*на экран выведется строчка "Параметр - значение"*/
  7. ?>

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

Комментарии

Изображение пользователя Гость.

Спрашивается, а нафига вообще было реализовано в PHP возможность вывода строк в двойных кавычках? только лишь для сокращения кода?:)

Изображение пользователя Гость.

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

Изображение пользователя Гость.

Учту, запомню.

Изображение пользователя Гость.

Да... не знал, спасибо за статью :)

Изображение пользователя Гость.

Статья хорошая, хоть буду теперь знать. А то кого не спросишь - тот прям гений, а толком объяснить ничего не может.

Изображение пользователя Гость.

Спасибо, помогло :)

Изображение пользователя Гость.

А я никак не мог понять как вывести текст "как есть" в хтмл страницу из пхп-файла, спасибо огромное

Отправить комментарий

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.