Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Переменные Основы PHP

Представьте себе задачу: нам нужно напечатать на экран фразу Father! два раза или даже пять раз. Эту задачу можно решить в лоб:

<?php

print_r('Father!');
print_r('Father!');

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

<?php

// greeting - переводится как приветствие
$greeting = 'Father!';
print_r($greeting);
print_r("\n");
print_r($greeting);
// => Father!
// => Father!

Определение переменной

В строчке $greeting = 'Father!' - происходит присваивание значения 'Father!' переменной с именем $greeting. В PHP имена переменных начинаются со знака $. В итоге переменная указывает на данные, которые были в нее записаны.

Когда переменная создана, можно начать ее использовать. Она подставляется в те места, где раньше стояла наша фраза. Во время выполнения интерпретатор (программа, которая выполняет код на PHP), доходит до строчки print_r($greeting); и подставляет вместо переменной ее содержимое, а затем выполняет код.

Для имени переменной используется любой набор допустимых символов, к которым относятся буквы английского алфавита, цифры, знак _. При этом цифру нельзя ставить в начале. Имена переменных регистрозависимы, то есть имя hello и имя heLLo — это два разных имени, а значит — две переменные. Регистр в PHP имеет важное значение, никогда не забывайте про него.

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

Изменение переменной

Само слово «переменная», говорит, что ее можно менять. И действительно, с течением времени внутри программы значения переменных могут изменяться:

<?php

// greeting - переводится как приветствие
$greeting = 'Father!';
print_r($greeting); // => Father!

$greeting = 'Mother!';
print_r($greeting); // => Mother!

Имя осталось тем же, но внутри другие данные. Следует заметить, что переменные в PHP не требуют специального объявления. Вместо этого переменная объявляется при первом ее использовании в программе.

Переменные - мощная, и в то же время опасная вещь. Никогда нельзя быть точно уверенным, что внутри нее записано, не проанализировав код, который находится перед переменной. Именно этим занимаются разработчики во время отладки, когда пытаются разобраться, почему программа не работает, или работает не так, как задумано. Как вы увидите позже, в PHP есть не только переменные. Более того, переменные не так часто используются с целью их менять. Намного чаще их используют с целью хранить.

Ошибки при работе с переменными

Главное правило: переменная должна быть объявлена до ее использования. Если сделать это позже, то программа просто не заработает.

<?php

print_r($greeting);
$greeting = 'Father!';
// PHP Notice:  Undefined variable: greeting in /private/var/tmp/index.php on line 3

Запуск программы выше завершается с ошибкой PHP Notice — это ошибка обращения. Она означает, что в коде используется имя (говорят идентификатор), который не определен. Причем в самой ошибке явно указан индентификатор переменой: greeting. Кроме неправильного порядка определения, в PHP встречаются банальные опечатки — как при использовании переменной, так и во время ее объявления. Количество подобных ошибок уменьшается за счет использования правильно настроенного редактора. Такой редактор подсвечивает имена, которые используются без объявления, и предупреждает о возможных проблемах.

Константы

Некоторые данные, такие как математические постоянные, никогда не меняются. Возьмем число π. Приближенно оно всегда равно 3.14 и не может измениться. Для обращения к подобным данным в PHP принято использовать константы.

<?php

const PI = 3.14;
print_r(PI); // => 3.14

Создание константы отличается от создания переменной. Оно начинается с ключевого слова const и последующего имени константы. При этом знак доллара не нужен. Далее ей присваивается нужное значение. Константы принято именовать буквами в верхнем регистре с _ в качестве разделителя. Константа, как и переменная, может использоваться в любом выражении. Единственное ограничение — константу нельзя изменить, что звучит довольно логично.

В PHP очень много встроенных констант, которые можно использовать в любом месте программы. Вот некоторые из них:

  • PHP_VERSION — текущая версия PHP
  • PHP_MAXPATHLEN — максимальная разрешенная длина имени файла
  • PHP_INT_MAX — максимальное возможное значение целых чисел (integer)

Кроме обычных констант, в PHP существует отдельная группа — магические константы. Их отличия заключаются в следующем:

  • Магические константы невозможно определить самому, можно пользоваться только существующими.
  • Магические константы начинаются и заканчиваются символами __ (два подчеркивания).
  • Магия заключается в том, что такие константы имеют одно и то же значение только в пределах определенной части программы.

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

  • __LINE__ — содержит текущую строку файла, в котором она используется
  • __FILE__ — путь до текущего файла
  • __DIR__ — путь до директории, в которой находится текущий файл

Heredoc

Определять строки в PHP можно с помощью специального heredoc-синтаксиса. После оператора <<< необходимо указать идентификатор с произвольным именем, затем перевод строки и саму строку. В конце добавляется тот же идентификатор, закрывающий вставку. Такой способ удобен для задания длинных строк, внутри которых встречаются и переводы строк, и разнотипные кавычки.

<?php

$str = <<<EOT
Пример строки,
охватывающей несколько строк,
с использованием heredoc-синтаксиса.
Здесь не нужно экранировать ни одинарные ', ни двойные " кавычки.
EOT;
print_r($str);
// => Пример строки,
// => охватывающей несколько строк,
// => с использованием heredoc-синтаксиса.
// => Здесь не нужно экранировать ни одинарные ', ни двойные " кавычки.

Обратите внимание, что перед закрывающим идентификатором (в нашем случае EOT) не должны стоять пробелы, иначе PHP начнет ругаться на ошибку синтаксиса.


Дополнительные материалы

  1. Heredoc

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы PHP-разработчик
Профессия
с нуля
Разработка веб-приложений на Laravel
1 декабря 10 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»