Уроки курса
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 предоставляет строгую типизацию и высокую производительность. В рамках методологии Direct Instruction мы начнем с абсолютных основ, постепенно выстраивая ваш фундамент знаний. PHP (PHP: Hypertext Preprocessor) — это скриптовый язык программирования общего назначения, который особенно активно применяется для веб-разработки. Главная особенность PHP заключается в том, что код выполняется на стороне сервера (backend), а клиент (браузер пользователя) получает лишь готовый HTML-результат. Это обеспечивает безопасность бизнес-логики, такой как расчет скидок или обработка платежей в нашем будущем интернет-магазине.

В PHP 8 были введены значительные улучшения синтаксиса, которые делают код более читаемым и безопасным. Мы будем использовать архитектуру MVC (Model-View-Controller) в будущем, но сейчас наша цель — освоить базовые строительные блоки языка: переменные, типы данных и управляющие конструкции. Каждая переменная в PHP начинается со знака доллара $. В отличие от старых версий, PHP 8 поощряет использование строгой типизации, что позволяет избежать множества скрытых ошибок на этапе оформления заказа.

Переменные, типы данных и строгая типизация

В интернет-магазине мы постоянно работаем с данными: цена товара (число с плавающей точкой - float), название категории (строка - string), наличие на складе (логический тип - bool), идентификатор пользователя (целое число - int). PHP является языком с динамической типизацией, но начиная с PHP 7 и особенно в PHP 8, разработчикам настоятельно рекомендуется использовать объявления типов. Это часть концепции Scaffolding: мы сразу учимся писать безопасный код, чтобы в будущем не тратить часы на отладку. Чтобы включить строгую типизацию в файле, необходимо использовать конструкцию declare(strict_types=1); в самом начале скрипта. Если вы попытаетесь передать строку туда, где ожидается число, PHP 8 выбросит фатальную ошибку (TypeError), предотвращая сохранение некорректных данных в базу.

Типичная ошибка новичков — путать операторы присваивания (=) и сравнения (== или ===). При проверке статуса заказа всегда используйте строгое сравнение (===), которое проверяет не только значение, но и тип данных. Например, 0 === false вернет false, тогда как 0 == false вернет true, что может привести к логической уязвимости в модуле оплаты.

php
<?php
declare(strict_types=1);

// Базовые типы данных для интернет-магазина
$productId = 105; // int
$productName = "Laptop Pro"; // string
$price = 1299.99; // float
$inStock = true; // bool

// Использование переменных в строках (интерполяция)
echo "Товар: $productName, Цена: $price USD";

// Проверка типов (строгое сравнение)
$quantity = 0;
if ($quantity === 0) {
    echo "Товар закончился на складе.";
}

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

Управляющие конструкции позволяют изменять ход выполнения программы в зависимости от условий. Вы уже знакомы с if-else, но при разработке e-commerce систем часто возникает необходимость проверять одно значение на множество вариантов. Например, обработка статуса заказа: 1 - 'Новый', 2 - 'Оплачен', 3 - 'Доставлен'. Традиционно для этого использовался оператор switch. Однако в PHP 8 появилось мощное выражение match. В отличие от switch, выражение match возвращает значение, использует строгое сравнение (===) и не требует использования оператора break (что исключает частую ошибку "проваливания" case). Кроме того, если match не находит совпадения и блок default отсутствует, он выбрасывает исключение UnhandledMatchError. Это идеальный инструмент для написания надежного кода нашего интернет-магазина.

В архивных материалах курса приводится пример функции getStatusName. Мы применим метод Chunking, разобрав эту конструкцию как единый смысловой блок обработки статусов. Понимание этой конструкции критически важно для интеграции с платежными шлюзами, где статус транзакции определяет дальнейшие действия системы.

php
<?php
// Пример из архивных материалов: использование match (PHP 8)
function getStatusName(int $statusCode): string {
    return match($statusCode) {
        1 => 'Новый',
        2 => 'Оплачен',
        3 => 'Доставлен',
        default => throw new InvalidArgumentException('Неизвестный статус: ' . $statusCode),
    };
}

$currentStatus = 2;
echo "Текущий статус заказа: " . getStatusName($currentStatus); // Выведет: Оплачен

В чем главное отличие выражения match (PHP 8) от классического оператора switch?

Какой символ используется в PHP для объявления переменной?

Задание

Сценарий: Вы разрабатываете логику отображения скидки для пользователя в зависимости от его группы (1 - Обычный, 2 - VIP, 3 - Оптовик).

  • Определите переменную $userGroup со значением 2.
  • Напишите выражение match, которое принимает $userGroup.
  • Для 1 верните '0%', для 2 верните '10%', для 3 верните '20%'.
  • Для default выбросьте исключение Exception.
10 баллов