Зарегистрируйтесь для доступа к 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

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

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

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

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

Об обучении на Хекслете

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

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

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

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

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

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

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

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

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

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

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