Рад снова приветствовать всех на страницах блога посвящённому всем тонкостям успешного создания и продвижения сайтов – Site on! В сегодняшнем уроке по PHP мы затронем такие темы как: типы переменных, экранирование, спецсимволы, а также синтаксис heredoc в PHP.
PHP имеет восемь различных типов переменных, из них
4 скалярных типа:
2 смешанных типа:
2 специальных типа:
Прежде чем перейти к рассмотрению каждого из типов более подробно, стоит уточнить, что PHP НЕ строго типизированный язык, а язык с динамической типизацией. Это значит, что нам не нужно заранее (при создании) объявлять тип каждой переменной. PHP сам догадается, какой тип имеет та или иная переменная, исходя из того, что мы в эту переменную положим. Это также значит, что в отличие от языков со строгой типизаций мы можем в переменную с числом (integer) взять и положить строку (string) и это не будет ошибкой! Это одна из особенностей PHP, которая очень нравится людям (новичкам), ранее не имевшим дело с программированием. Как правило, в итоге все приходят к тому, что это минус языка, а не плюс.
Boolean (логический) – простейший тип. Может принимать всего 2 значения: true или false (верно или неверно), они регистра-независимы (можно писать TRUE, trUe и тд.). Наглядный пример:
<?php $name = true; $name2 = false;
echo $name, '<br />', $name2; ?>
Результат:
Как видите, браузер не понимает булев тип, в отличие от PHP, поэтому при попытке вывести true или false он выведет на страницу число 1 или пустую строку.
При преобразовании в логический тип следующие значения рассматриваются как FALSE:
Все остальные значения рассматриваются как TRUE.
Идём далее: разница между integer и float, как вы уже могли догадаться – в точке :) Смотрим пример:
<?php $int = 5; // десятичное число $int = -5; // отрицательное число $int = 05; // восьмеричное число $int = 0x1A; // шестнадцатеричное число
//Числа с плавающей точкой (вещественные): $flt = 1.4; $flt = 1.2e3; $flt = 7E-10; ?>
Однако самым часто применяемым типом в PHP можно считать именно строки (string). Строки можно записывать либо в одинарных, либо в двойных кавычках, но записывать строки в двойных кавычках я никогда и никому не советую, так как тем самым вы заставляете интерпретатор PHP «парсить» вашу строку на наличие переменных в ней, чем хоть и незначительно, но замедляете работу. Даже если вы хотите использовать в вашей строке переменные – это можно сделать с помощью одинарных кавычек + конкатенации (склеивание двух и более строк в одну). Для чего тогда двойные кавычки вообще нужны? Например, когда мы хотим использовать спецсимволы (\n, \r и тд.), но о них немного позже.
Также стоит отметить, что использование одинарных кавычек + конкатенации делает код гораздо читабельней, чем если всё без разбора засовывать в двойные кавычки. Но хватит предисловий, сейчас вы сами всё увидите и поймёте:
<?php
header('Content-Type: text/html; charset=utf-8');
$number = 2; //integer
$hand1 = "Количество рук у человека:"; //string + заставляем парсить на наличие переменных
$hand2 = 'Количество рук у человека:'; //string
//добавим в эти строки переменную $number:
$hand1 = "Количество рук у человека: $number и ещё текст..."; // НЕ рекомендую
$hand2 = 'Количество рук у человека: ' . $number . ' и ещё текст...'; // рекомендую!
echo $hand1, '<br />', $hand2;
?>
Результат:
Подробнее о конкатенации мы поговорим в следующей статье.
Далее мы рассмотрим такой тип переменных в PHP как NULL. Здесь всё очень просто, переменная считается NULL если:
Изучение оставшихся типов переменных на данном этапе было бы бессмысленным. С остальными типами мы столкнёмся и разберём их при более глубоком изучении PHP.
А что если мы в нашей строке не хотим доставать значение переменной, а хотим написать буквально $number? Рассмотрим два варианта:
<?php $number = 2;
$hand1 = "Количество рук у человека: \$number и ещё текст..."; // НЕ рекомендую $hand2 = 'Количество рук у человека: $number и ещё текст...'; // рекомендую!
echo $hand1, '<br />', $hand2; ?>
Результат:
В первом варианте (с двойными кавычками) мы использовали экранирование спецсимвола доллара, благодаря чему данный спецсимвол перестал иметь своё специальное назначение (обозначение переменных) и превратился в обыкновенный знак доллара.
Во втором варианте (с одинарными кавычками) как вы уже знаете – PHP интерпретатор даже не пытался найти переменных в строке, а потому экранирование не потребовалось.
Далее про экранирование: в одинарных кавычках ничего и никогда экранировать не нужно, попросту нечего. От экранирования мы плавно переходим к уже упомянутым спецсимволам в PHP.
Специально для читателей блога Site on! я подготовил небольшой список специальных символов в языке программирования PHP:
Посмотрим на работу спецсимволов на примере \n – спецсимвол, который делает перевод на новую строку (как Энтер), однако браузеры не понимают (и не должны) его и игнорируют, но результат его работы можно посмотреть в исходном коде страницы:
<?php $rule = "пример работы \n в двойных кавычках"; $rule2 = 'пример работы \n в одинарный кавычках';
echo $rule, '<br />', $rule2; ?>
Результат:
Исходный код (Ctrl + U):
Если для посетителей в браузере спецсимвол \n никак не отображается, тогда в чём его смысл?
Во-первых, с помощью спецсимволов и \n в частности можно удобно форматировать код на странице (как в примере выше).
Во-вторых, \n можно использовать, например, при операциях записи в файл, чтобы сделать перенос (Энтер) и продолжить запись на новой строке.
Альтернативой такого форматирования является heredoc.
Пример:
<?php echo <<<METKA Пример форматирования строки с помощью heredoc синтаксиса как вы можете заметить, я не использую спецсимволы чтобы сделать табуляцию или перенос строки в исходном коде, при этом на экран всё выводится в обычном режиме. METKA; ?>
Результат:
Исходный код (Ctrl + U):
Результат говорит сам за себя, теперь давайте разберемся, как же всё устроено:
Спасибо за внимание! В следующих статьях мы поговорим о понятии конкатенации, которое уже не раз звучало сегодня. Далее обсудим работу со строками, операторы в PHP, а также я сделаю обзор некоторых полезных функций. Всем хорошего дня и до встречи!
Пожалуйста, прокомментируйте, как Вам моя статья?