Переменные и константы в PHP
В прошлой статье мы написали первую программу и познакомились с типами данных. Теперь разберёмся, как хранить данные в программе — для этого в PHP есть переменные и константы.
Что такое переменная
Переменная — это именованная «коробка», в которой хранится значение. В PHP имя переменной всегда начинается со знака доллара $:
<?php
$name = "Анна";
$age = 25;
echo $name; // Вывод: Анна
echo $age; // Вывод: 25
Оператор = называется оператором присваивания: он кладёт значение справа в переменную слева. Объявлять тип заранее не нужно — PHP определит его сам по значению.
Правила именования переменных
Имя переменной должно подчиняться нескольким правилам:
- начинается со знака
$, затем буква или подчёркивание:$price,$_token; - может содержать буквы, цифры и подчёркивания:
$user_id,$item2; - не может начинаться с цифры:
$2items— ошибка; - регистр имеет значение:
$nameи$Name— две разные переменные.
Принято называть переменные осмысленно и на английском:
$totalPriceлучше, чем$tpили$x. Через месяц вы скажете себе спасибо.
Переменные можно менять
Отсюда и название — значение переменной можно перезаписать в любой момент:
<?php
$counter = 1;
echo $counter; // Вывод: 1
$counter = $counter + 1;
echo $counter; // Вывод: 2
$counter += 10; // короткая запись $counter = $counter + 10
echo $counter; // Вывод: 12
Сокращённые операторы работают и с другими действиями: -=, *=, /=, а для строк — .= (дописать в конец).
Вывод переменных в строках
Если строка взята в двойные кавычки, PHP подставит значение переменной прямо внутри неё. В одинарных кавычках подстановка не работает:
<?php
$city = "Казань";
echo "Я живу в городе $city"; // Вывод: Я живу в городе Казань
echo 'Я живу в городе $city'; // Вывод: Я живу в городе $city
Когда переменная «прилипает» к другим символам, её имя берут в фигурные скобки:
<?php
$fruit = "яблок";
echo "В корзине 5 {$fruit}о́в"; // фигурные скобки отделяют имя переменной
Проверка типа и содержимого
Чтобы посмотреть, что лежит в переменной и какого она типа, удобны функции var_dump() и gettype():
<?php
$price = 199.90;
var_dump($price); // Вывод: float(199.9)
echo gettype($price); // Вывод: double
var_dump()— главный друг при отладке: он показывает и тип, и значение, и длину строки.
Константы
Константа — это значение, которое задаётся один раз и больше никогда не меняется. Подходит для настроек, которые должны оставаться неизменными во время работы скрипта: курс налога, название сайта, лимиты.
Константу объявляют ключевым словом const или функцией define():
<?php
const SITE_NAME = "CodeChick";
define("MAX_USERS", 100);
echo SITE_NAME; // Вывод: CodeChick
echo MAX_USERS; // Вывод: 100
Обратите внимание: знак $ у констант не пишется, а имена принято писать ЗАГЛАВНЫМИ буквами.
Чем const отличается от define()
const | define() | |
|---|---|---|
| Когда вычисляется | при компиляции | во время выполнения |
| Можно внутри if и функций | нет | да |
| Можно в классах | да | нет |
В обычном коде чаще используют const — он короче и работает быстрее. define() пригодится, когда имя или значение константы нужно вычислить на лету.
Константу нельзя изменить
<?php
const PI = 3.14159;
PI = 3; // Ошибка! Parse error: константу нельзя переприсвоить
Встроенные константы
В PHP уже есть набор готовых констант. Несколько полезных:
<?php
echo PHP_VERSION; // Вывод: 8.3.6 (ваша версия PHP)
echo PHP_EOL; // символ перевода строки
echo PHP_INT_MAX; // Вывод: 9223372036854775807
Переменная или константа: что выбрать
Правило простое: если значение будет меняться по ходу программы — переменная, если оно фиксировано раз и навсегда — константа. Например, счётчик товаров в корзине — переменная, а максимальный размер загружаемого файла — константа.
<?php
const TAX_RATE = 0.2; // НДС 20% — не меняется
$price = 1000;
$total = $price + $price * TAX_RATE;
echo "Итого с налогом: $total"; // Вывод: Итого с налогом: 1200
Что мы узнали
- Переменная начинается с
$, хранит значение и может меняться сколько угодно раз. - Регистр в именах важен:
$nameи$Name— разные переменные. - В двойных кавычках переменные подставляются в строку, в одинарных — нет.
var_dump()показывает тип и значение переменной — незаменим при отладке.- Константы объявляются через
constилиdefine(), пишутся ЗАГЛАВНЫМИ и не меняются. - У PHP есть встроенные константы вроде
PHP_VERSIONиPHP_EOL.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.