Символы PHP: справочник по синтаксису для новичков и профи

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Символы PHP: путеводитель по джунглям синтаксиса

Вы когда-нибудь смотрели на чужой PHP-код и чувствовали себя так, будто читаете древние иероглифы? Стрелки, двоеточия, вопросительные знаки — всё это мелькает перед глазами, а мозг отказывается понимать, что происходит. Знакомо? Не переживайте, вы не одиноки. Тема «что означает этот символ в PHP» — одна из самых популярных на Stack Overflow, и сегодня мы разложим всё по полочкам.

В этой статье мы составили полный справочник символов PHP — от базовых операторов до хитрых конструкций современного синтаксиса. Вы узнаете, как читать любой PHP-код с лёгкостью. Поехали!


1. Стрелка -> (объектный доступ)

Самый частый гость в любом PHP-проекте. Стрелка используется для доступа к свойствам и методам объекта. Если вы видите $obj->prop — значит, мы обращаемся к свойству prop объекта $obj.

<?php
class User {
    public $name = 'Алексей';
    public function greet() {
        return "Привет, {$this->name}!";
    }
}

$user = new User();
echo $user->name;      // Алексей
echo $user->greet();   // Привет, Алексей!
?>

Обратите внимание: внутри класса мы используем $this->name — это та же самая стрелка, но указывающая на текущий объект.

2. Двойное двоеточие :: (Scope Resolution Operator)

Два двоеточия — это оператор разрешения области видимости. Он нужен для доступа к статическим свойствам, методам и константам класса. Запомните: если видите :: — значит, вы обращаетесь к чему-то, что принадлежит классу, а не его экземпляру.

<?php
class Config {
    const SITE_NAME = 'PythonLib';
    public static $version = '1.0';
    public static function info() {
        return self::SITE_NAME . ' v' . self::$version;
    }
}

echo Config::SITE_NAME;  // PythonLib
echo Config::$version;   // 1.0
echo Config::info();     // PythonLib v1.0
?>

Здесь self:: — это ссылка на текущий класс изнутри него. А снаружи мы пишем ИмяКласса::.

3. Оператор объединения с null (??)

Один из самых полезных операторов, появившихся в PHP 7. Он позволяет элегантно обрабатывать случаи, когда переменная может быть не определена или равна null. Выражение $a ?? $b вернёт $a, если оно существует и не null, иначе — $b.

<?php
$username = $_GET['user'] ?? 'Гость';
// Вместо громоздкой конструкции:
// $username = isset($_GET['user']) ? $_GET['user'] : 'Гость';

// Можно цепочкой:
$name = $firstName ?? $nickname ?? 'Аноним';
?>

4. Оператор космический корабль <=> (Spaceship)

Трёхсторонний оператор сравнения. Возвращает -1, 0 или 1 в зависимости от того, меньше, равно или больше левое значение по сравнению с правым. Идеально для сортировки.

<?php
echo 1 <=> 2;  // -1 (1 меньше 2)
echo 2 <=> 2;  // 0  (равны)
echo 3 <=> 2;  // 1  (3 больше 2)

// Пример с сортировкой массива объектов
usort($users, function($a, $b) {
    return $a->age <=> $b->age;
});
?>

5. Троеточие ... (Spread оператор / Variadic)

Три точки могут означать две вещи. Первая — распаковка массива (spread) в PHP 7.4+. Вторая — обозначение переменного количества аргументов функции (variadic).

<?php
// 1. Spread для массивов
$parts = ['яблоко', 'груша'];
$fruits = ['банан', ...$parts, 'апельсин'];
// ['банан', 'яблоко', 'груша', 'апельсин']

// 2. Variadic аргументы
function sum(...$numbers) {
    return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 10
?>

6. Вопросительный знак с двоеточием ?: (Ternary)

Тернарный оператор — сокращённая запись if-else. $a ? $b : $c вернёт $b, если $a истинно, иначе $c.

<?php
$age = 20;
$status = ($age >= 18) ? 'Взрослый' : 'Ребёнок';
echo $status; // Взрослый

// Эливис (?:) — сокращённая версия
$name = $input ?: 'По умолчанию';
// Работает как: $input ? $input : 'По умолчанию'
?>

7. Комбинированные операторы (+=, -=, .= и другие)

Сокращения для арифметических операций и конкатенации строк. Работают по принципу: $a += $b эквивалентно $a = $a + $b.

<?php
$count = 5;
$count += 3;  // $count = 8
$count -= 2;  // $count = 6
$count *= 4;  // $count = 24

$text = 'Hello';
$text .= ' World';  // $text = 'Hello World'
?>

8. Оператор instanceof (проверка типа)

Проверяет, является ли объект экземпляром определённого класса или его наследника. Очень полезно для полиморфизма.

<?php
class Animal {}
class Dog extends Animal {}

$pet = new Dog();

if ($pet instanceof Animal) {
    echo 'Это животное!'; // Выполнится
}

if ($pet instanceof Dog) {
    echo 'Это собака!';   // Выполнится
}
?>

9. Оператор @ (подавление ошибок)

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

<?php
// Плохая практика, но иногда встречается:
$content = @file_get_contents('http://example.com');
// Если файл не найден — ошибка не покажется, $content будет false
?>

10. Оператор -> для null (?->) в PHP 8

Начиная с PHP 8, появился nullsafe-оператор. Если какая-то часть цепочки вызовов вернёт null, всё выражение сразу вернёт null без ошибки.

<?php
// Вместо:
$country = null                

Блоги

Рекомендаций по книгам