Уроки курса
1 Основы синтаксиса PHP 8
60 мин
2 Функции и управляющие конструкции
60 мин
3 Объектно-ориентированное программирование на PHP
60 мин
4 Наследование, интерфейсы и полиморфизм
60 мин
5 Основы баз данных MySQL и работа через PDO
60 мин
6 Архитектурный паттерн MVC
60 мин
7 Введение в Laravel и настройка окружения
60 мин
8 Маршрутизация и контроллеры в Laravel
60 мин
9 Шаблонизатор Blade и создание интерфейса
60 мин
10 Миграции баз данных и Eloquent ORM
60 мин
11 Связи моделей в Eloquent — Настройка связей 'один …
60 мин
12 Аутентификация и защита маршрутов
60 мин
13 Разработка каталога товаров и категорий
60 мин
14 Реализация корзины покупок через сессии
60 мин
15 Оформление заказа и транзакции базы данных
60 мин
16 Интеграция платежной системы Stripe
60 мин
17 Интеграция платежной системы Vipps
60 мин
18 Разработка панели администратора
60 мин
19 Оптимизация и подготовка к production
60 мин
20 Деплой Laravel-приложения на сервер
60 мин
21 Основы PHP 8: Синтаксис, переменные и управляющие конструкции
60 мин
22 Функции и массивы в PHP 8
60 мин
23 Объектно-ориентированное программирование: Классы и объекты
60 мин
24 Продвинутое ООП: Наследование, интерфейсы и полиморфизм
60 мин
25 Основы баз данных: Проектирование БД и работа с …
60 мин
26 Взаимодействие PHP с MySQL через PDO
60 мин
27 Архитектура MVC и введение в фреймворк Laravel
60 мин
28 Маршрутизация и контроллеры в Laravel
60 мин
29 Шаблонизатор Blade: Создание пользовательского интерфейса
60 мин
30 Миграции и Eloquent ORM: Создание таблиц товаров
60 мин
31 Связи в Eloquent ORM: Отношения между моделями
60 мин
32 Аутентификация и авторизация пользователей
60 мин
33 Разработка каталога товаров: Вывод, фильтрация и пагинация
60 мин
34 Реализация корзины покупок с использованием сессий
60 мин
35 Оформление заказа: Работа с формами и валидация
60 мин
36 Транзакции базы данных: Сохранение заказа
60 мин
37 Интеграция платежной системы Stripe
60 мин
38 Интеграция платежной системы Vipps
60 мин
39 Создание панели администратора
60 мин
40 Подготовка к production и деплой приложения
60 мин
41 Основы PHP 8 и синтаксис
60 мин
42 Объектно-ориентированное программирование на PHP
60 мин
43 Продвинутое ООП и интерфейсы
60 мин
44 Основы баз данных и MySQL
60 мин
45 Архитектурный паттерн MVC
60 мин
46 Введение в Laravel и маршрутизация
60 мин
47 Шаблонизатор Blade и верстка интерфейса
60 мин
48 Миграции и структура базы данных
60 мин
49 Eloquent ORM и модели
60 мин
50 Отношения в Eloquent ORM
60 мин
51 Авторизация и защита маршрутов
60 мин
52 Создание каталога товаров
60 мин
53 Реализация корзины покупок
60 мин
54 Оформление заказа и транзакции БД
60 мин
55 Интеграция платежной системы Stripe
60 мин
56 Интеграция платежной системы Vipps
60 мин
57 Панель администратора: управление товарами
60 мин
58 Панель администратора: управление заказами
60 мин
59 Подготовка к production и деплой
60 мин
60 Запуск и тестирование готового интернет-магазина
60 мин

Основы PHP 8 и синтаксис

Изучение базового синтаксиса PHP 8, переменных, типов данных и новых управляющих конструкций, таких как выражение match.

Прогресс урока: 0%

Введение в PHP 8 для электронной коммерции

Добро пожаловать в курс по созданию интернет-магазина! Разработка масштабируемых веб-приложений требует надежной серверной инфраструктуры. Язык PHP версии 8 предоставляет строгую типизацию и высокую производительность, что делает его идеальным выбором для e-commerce. В этом уроке мы применим метод Direct Instruction (Прямое обучение): мы будем двигаться небольшими, четко структурированными шагами, чтобы гарантировать полное понимание базового синтаксиса перед переходом к сложным концепциям.

PHP (Hypertext Preprocessor) — это скриптовый язык программирования общего назначения, который интенсивно применяется для разработки веб-приложений. Код PHP выполняется на сервере, генерируя HTML, который затем отправляется в браузер клиента. Это означает, что пользователь никогда не видит исходный код PHP, а только результат его работы.

В PHP 8 были введены значительные улучшения синтаксиса. Важнейшим аспектом современной разработки является строгая типизация. В PHP переменные начинаются со знака доллара ($). Скалярные типы данных включают int (целые числа), float (числа с плавающей точкой), string (строки) и bool (логические значения). Использование строгих типов позволяет избежать множества скрытых ошибок на этапе оформления заказа в нашем будущем магазине.

php
<?php
// Включение строгой типизации (должно быть первой строкой файла)
declare(strict_types=1);

// Объявление переменных с указанием типов (в функциях)
$productName = 'Ноутбук';
$productPrice = 1200.50;
$isInStock = true;
$stockQuantity = 15;

// Функция со строгой типизацией аргументов и возвращаемого значения
function calculateTotal(float $price, int $quantity): float {
    return $price * $quantity;
}

$total = calculateTotal($productPrice, 2);
echo "Общая стоимость: $" . $total; // Вывод: Общая стоимость: $2401
?>

Управляющие конструкции: Эволюция от switch к match

Одной из самых частых задач в интернет-магазине является обработка статусов заказа (например: 'Новый', 'Оплачен', 'Доставлен'). Исторически для этого использовалась конструкция switch. Однако в PHP 8 была представлена конструкция match. Используя метод Chunking (Чанкинг), давайте разобьем разницу между ними.

Почему match лучше switch?

  • Строгое сравнение: match использует строгое сравнение (===), в то время как switch использует нестрогое (==), что часто приводило к неожиданным багам.
  • Возвращаемое значение: match является выражением, то есть оно возвращает значение, которое можно сразу присвоить переменной или вернуть из функции.
  • Отсутствие break: В switch забытый break приводит к проваливанию (fallthrough) в следующий case. В match это исключено.
  • Исчерпываемость: Если match не находит совпадения и нет блока default, он выбрасывает исключение UnhandledMatchError, что делает код более безопасным.

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

php
<?php
// Практика: Конструкция match (Архивный вариант 1, Упражнение 1.2)
function getStatusName(int $statusCode): string {
    // match возвращает строку, которая сразу возвращается функцией (return)
    return match($statusCode) {
        1 => 'Новый',
        2 => 'Оплачен',
        3 => 'Доставлен',
        // Если статус неизвестен, мы обязаны обработать эту ситуацию
        default => throw new InvalidArgumentException('Неизвестный статус: ' . $statusCode),
    };
}

try {
    echo getStatusName(2); // Выведет: Оплачен
    echo getStatusName(99); // Выбросит исключение
} catch (InvalidArgumentException $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>

Что произойдет, если в выражении match (без блока default) не будет найдено совпадение для переданного значения?

Напишите название новой управляющей конструкции в PHP 8, которая работает как строго типизированный и возвращающий значение аналог switch.