Переменные и константы в 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()

constdefine()
Когда вычисляетсяпри компиляцииво время выполнения
Можно внутри 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.
Проверьте себя
1. С какого символа всегда начинается имя переменной в PHP?
A@
B#
C$
D&
2. Что выведет код `$city = "Казань"; echo 'Я живу в $city';`?
AЯ живу в Казань
BЯ живу в $city
CОшибка: переменная не найдена
DКазань
3. Чем `const` отличается от `define()` при объявлении констант в PHP?
Aconst нельзя использовать в классах, define() — можно
Bconst вычисляется при компиляции и можно использовать в классах, define() — во время выполнения и можно внутри if
Cconst и define() полностью взаимозаменяемы
Ddefine() работает быстрее, чем const
4. Какая функция PHP покажет и тип, и значение переменной — удобна при отладке?
Aecho
Bprint
Cvar_dump
Dgettype

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект