Skip to content

Глава 0.2: Окружение разработчика

Установка PHP, настройка VS Code, локальный сервер, первый "Hello World"


Зачем нужно окружение?

Чтобы писать PHP-код и видеть результат, тебе нужны три вещи:

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│                 │     │                 │     │                 │
│   Редактор      │     │   PHP           │     │   Веб-сервер    │
│   кода          │     │   интерпретатор │     │   (локальный)   │
│                 │     │                 │     │                 │
│   VS Code       │     │   php.exe       │     │   Встроенный    │
│                 │     │                 │     │   или Nginx     │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                       │                       │
        └───────────────────────┼───────────────────────┘

                    ┌───────────▼───────────┐
                    │   Твой компьютер      │
                    │   = локальный сервер  │
                    └───────────────────────┘

Редактор кода — где ты пишешь код (VS Code) PHP — программа, которая выполняет твой код Веб-сервер — принимает HTTP-запросы и передаёт их PHP

В этой главе мы всё это установим и настроим.


1. Выбор способа установки

Есть несколько путей. Выбери один в зависимости от твоей ОС и предпочтений:

Вариант A: Laragon (Windows) ⭐ Рекомендую

Плюсы:

  • Всё в одном: PHP, MySQL, Nginx/Apache
  • Красивые локальные домены (project.test)
  • Легко переключать версии PHP
  • Portable — можно носить на флешке

Минусы:

  • Только Windows

Вариант B: XAMPP (Windows/Mac/Linux)

Плюсы:

  • Кроссплатформенный
  • Проверенный временем
  • Включает phpMyAdmin

Минусы:

  • Более громоздкий
  • Устаревший интерфейс
  • Сложнее настраивать домены

Вариант C: Ручная установка + встроенный сервер

Плюсы:

  • Полный контроль
  • Понимаешь, как всё работает
  • Легковесно

Минусы:

  • Больше ручной работы
  • MySQL ставится отдельно

Вариант D: Docker (для продвинутых)

Пока не рекомендую — это для Phase 5. Сначала разберись с основами.


2. Установка: Windows + Laragon

Шаг 1: Скачай Laragon

  1. Перейди на https://laragon.org/download/
  2. Скачай Laragon Full (включает PHP, MySQL, Node.js)
  3. Размер ~150 MB

Шаг 2: Установи

  1. Запусти установщик
  2. Выбери папку (рекомендую C:\laragon)
  3. Оставь галочки по умолчанию
  4. Дождись завершения

Шаг 3: Запусти Laragon

  1. Открой Laragon
  2. Нажми кнопку "Start All"
  3. Должны загореться зелёные индикаторы:
    • Apache (или Nginx)
    • MySQL
┌────────────────────────────────────────┐
│           LARAGON                      │
├────────────────────────────────────────┤
│                                        │
│   🟢 Apache    Running                 │
│   🟢 MySQL     Running                 │
│                                        │
│   [ Start All ]  [ Stop ]  [ Reload ]  │
│                                        │
│   📁 Root: C:\laragon\www              │
│                                        │
└────────────────────────────────────────┘

Шаг 4: Проверь работу

  1. Открой браузер
  2. Перейди на http://localhost
  3. Должна открыться страница приветствия Laragon

Шаг 5: Найди важные папки

C:\laragon\
├── www\                    ← Сюда кладёшь свои проекты
│   └── index.php          ← Главная страница localhost
├── bin\
│   ├── php\               ← Здесь лежит PHP
│   │   └── php-8.x\
│   │       └── php.exe
│   └── mysql\             ← Здесь MySQL
└── etc\                   ← Конфиги

Шаг 6: Добавь PHP в PATH (важно!)

Чтобы использовать php в терминале:

  1. Правый клик на Laragon → ToolsPathAdd Laragon to Path
  2. Перезапусти терминал
  3. Проверь:
bash
php -v

Должно показать:

PHP 8.x.x (cli) (built: ...)

Создание нового проекта в Laragon

  1. Правый клик на иконку Laragon
  2. Quick appBlank
  3. Введи имя проекта (например, calculator)
  4. Laragon создаст:
    • Папку C:\laragon\www\calculator
    • Локальный домен calculator.test

Теперь http://calculator.test ведёт на твой проект!


3. Установка: Windows + XAMPP (альтернатива)

Шаг 1: Скачай XAMPP

  1. Перейди на https://www.apachefriends.org/
  2. Скачай XAMPP для Windows
  3. Выбери версию с PHP 8.x

Шаг 2: Установи

  1. Запусти установщик
  2. Выбери компоненты:
    • ✅ Apache
    • ✅ MySQL
    • ✅ PHP
    • ✅ phpMyAdmin
  3. Установи в C:\xampp

Шаг 3: Запусти

  1. Открой XAMPP Control Panel
  2. Нажми Start напротив Apache
  3. Нажми Start напротив MySQL
┌────────────────────────────────────────────────────────┐
│ XAMPP Control Panel                                    │
├─────────┬─────────────┬─────────┬──────────┬──────────┤
│ Module  │ PID(s)      │ Port(s) │ Actions  │          │
├─────────┼─────────────┼─────────┼──────────┼──────────┤
│ Apache  │ 1234        │ 80, 443 │ [Stop]   │ [Admin]  │
│ MySQL   │ 5678        │ 3306    │ [Stop]   │ [Admin]  │
└─────────┴─────────────┴─────────┴──────────┴──────────┘

Шаг 4: Проверь

Открой http://localhost — должна быть страница XAMPP.

Папка проектов

Проекты кладутся в C:\xampp\htdocs\

Добавь PHP в PATH

  1. Открой Параметры системыДополнительные параметрыПеременные среды
  2. В Path добавь: C:\xampp\php
  3. Перезапусти терминал

4. Установка: macOS

Вариант A: Homebrew (рекомендую)

bash
# Установи Homebrew (если нет)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Установи PHP
brew install php

# Проверь версию
php -v

# Установи MySQL (опционально, для будущих проектов)
brew install mysql
brew services start mysql

Вариант B: Laravel Valet (удобно для Laravel)

bash
# После установки PHP через Homebrew
composer global require laravel/valet
valet install

# Теперь можешь "парковать" папки
cd ~/Sites
valet park

# Любая папка в ~/Sites станет доступна как folder-name.test

Вариант C: MAMP

Графическая альтернатива как XAMPP, но для Mac: https://www.mamp.info/


5. Установка: Linux (Ubuntu/Debian)

bash
# Обнови пакеты
sudo apt update

# Установи PHP и необходимые модули
sudo apt install php php-cli php-mysql php-mbstring php-xml php-curl php-zip

# Проверь версию
php -v

# Установи MySQL
sudo apt install mysql-server
sudo mysql_secure_installation

# Опционально: Nginx
sudo apt install nginx

Для Fedora/RHEL:

bash
sudo dnf install php php-cli php-mysqlnd php-mbstring php-xml
sudo dnf install mysql-server

6. Встроенный PHP-сервер

PHP имеет встроенный веб-сервер для разработки. Это самый простой способ запустить проект.

Как использовать

bash
# Перейди в папку проекта
cd /path/to/your/project

# Запусти сервер
php -S localhost:8000

Теперь открой http://localhost:8000 в браузере.

Пример

bash
# Создай папку проекта
mkdir ~/projects/hello-php
cd ~/projects/hello-php

# Создай файл
echo '<?php echo "Hello, World!"; ?>' > index.php

# Запусти сервер
php -S localhost:8000
PHP 8.x Development Server started at ...
Listening on http://localhost:8000
Document root is /home/user/projects/hello-php
Press Ctrl-C to quit.

Каждый запрос будет логироваться в терминале:

[Tue Jan 14 10:30:45 2025] 127.0.0.1:52341 Accepted
[Tue Jan 14 10:30:45 2025] 127.0.0.1:52341 [200]: GET /
[Tue Jan 14 10:30:45 2025] 127.0.0.1:52341 Closing

Важно!

  • Встроенный сервер только для разработки
  • Не используй его в production
  • Обрабатывает один запрос за раз (медленно)
  • Для продакшена нужен Nginx или Apache

7. Установка VS Code

Шаг 1: Скачай и установи

  1. Перейди на https://code.visualstudio.com/
  2. Скачай версию для своей ОС
  3. Установи

Шаг 2: Русификация (опционально)

  1. Открой VS Code
  2. Нажми Ctrl+Shift+X (расширения)
  3. Найди "Russian Language Pack"
  4. Установи и перезапусти

Шаг 3: Установи расширения для PHP

Нажми Ctrl+Shift+X и установи:

Обязательные:

РасширениеЗачем
PHP IntelephenseАвтодополнение, подсказки, переход к определению
PHP DebugОтладка с Xdebug
PHP Namespace ResolverАвтоимпорт классов

Рекомендуемые:

РасширениеЗачем
DotENVПодсветка .env файлов
GitLensУлучшенная работа с Git
Error LensПоказывает ошибки прямо в строке кода
Path IntellisenseАвтодополнение путей к файлам
Auto Rename TagАвтопереименование HTML-тегов
Bracket Pair ColorizerРазноцветные скобки (встроено в VS Code 1.60+)

Шаг 4: Настрой VS Code для PHP

Открой настройки: Ctrl+, → Открой JSON (иконка в правом верхнем углу)

Добавь:

json
{
    // PHP
    "php.validate.executablePath": "C:\\laragon\\bin\\php\\php-8.2.4-Win32-vs16-x64\\php.exe",
    
    // Для Mac/Linux:
    // "php.validate.executablePath": "/usr/bin/php",
    
    // Intelephense
    "intelephense.environment.phpVersion": "8.2.0",
    
    // Форматирование
    "editor.formatOnSave": true,
    "editor.tabSize": 4,
    "editor.insertSpaces": true,
    
    // Файлы
    "files.associations": {
        "*.php": "php"
    },
    
    // Исключить папки из поиска
    "search.exclude": {
        "**/vendor": true,
        "**/node_modules": true
    }
}

Примечание: Путь к PHP зависит от твоей установки. Найди свой php.exe и укажи его.

Шаг 5: Настрой терминал в VS Code

VS Code имеет встроенный терминал (`Ctrl+``).

Для Windows рекомендую использовать Git Bash или PowerShell:

json
{
    "terminal.integrated.defaultProfile.windows": "Git Bash"
}

8. Твой первый PHP-скрипт

Создай проект

Laragon:

  1. Правый клик → Quick app → Blank → hello
  2. Откроется папка C:\laragon\www\hello

Или вручную:

bash
mkdir hello
cd hello

Создай файл index.php

Открой папку в VS Code: FileOpen Folder

Создай файл index.php:

php
<?php

echo "Привет, мир!";

Запусти

Laragon: Открой http://hello.test

Встроенный сервер:

bash
php -S localhost:8000

Открой http://localhost:8000

Результат

В браузере ты увидишь:

Привет, мир!

Поздравляю! 🎉 Ты только что написал и запустил свой первый PHP-код.


9. Разбор: что произошло?

Давай разберём, что случилось, когда ты открыл страницу:

┌──────────────────────────────────────────────────────────────────┐
│                         ЧТО ПРОИЗОШЛО                            │
├──────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Ты ввёл http://hello.test (или localhost:8000)              │
│                           │                                      │
│                           ▼                                      │
│  2. Браузер отправил HTTP-запрос:                               │
│     GET / HTTP/1.1                                               │
│     Host: hello.test                                             │
│                           │                                      │
│                           ▼                                      │
│  3. Веб-сервер получил запрос                                   │
│     Увидел, что запрашивается /                                  │
│     Нашёл файл index.php                                         │
│                           │                                      │
│                           ▼                                      │
│  4. Веб-сервер передал файл PHP-интерпретатору                  │
│                           │                                      │
│                           ▼                                      │
│  5. PHP выполнил код:                                           │
│     <?php echo "Привет, мир!"; ?>                                │
│     Результат: строка "Привет, мир!"                            │
│                           │                                      │
│                           ▼                                      │
│  6. Веб-сервер отправил HTTP-ответ:                             │
│     HTTP/1.1 200 OK                                              │
│     Content-Type: text/html                                      │
│                                                                  │
│     Привет, мир!                                                 │
│                           │                                      │
│                           ▼                                      │
│  7. Браузер отобразил текст на экране                           │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

Ключевой момент

Браузер не видит PHP-код. Он получает только результат выполнения.

Если ты откроешь "Просмотр кода страницы" (Ctrl+U), увидишь:

Привет, мир!

Никакого <?php там нет!


10. PHP внутри HTML

PHP чаще всего используется внутри HTML:

php
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Мой первый сайт</title>
</head>
<body>
    <h1><?php echo "Привет, мир!"; ?></h1>
    
    <p>Сейчас: <?php echo date("H:i:s"); ?></p>
    
    <p>Сегодня: <?php echo date("d.m.Y"); ?></p>
</body>
</html>

Что увидит браузер:

html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Мой первый сайт</title>
</head>
<body>
    <h1>Привет, мир!</h1>
    
    <p>Сейчас: 14:35:22</p>
    
    <p>Сегодня: 27.01.2026</p>
</body>
</html>

PHP-теги (<?php ... ?>) исчезли, на их месте — результат выполнения.


11. Синтаксис PHP: базовые правила

Теги PHP

php
<?php
// Это PHP-код
echo "Привет";
?>
  • Код PHP всегда внутри <?php ... ?>
  • Закрывающий тег ?> можно опускать, если файл содержит только PHP
  • В современном PHP рекомендуется не ставить ?> в конце файла

Почему не ставить ?>?

Если после ?> случайно окажется пробел или пустая строка — это отправится в браузер. Это может сломать заголовки HTTP.

php
<?php
// Хороший стиль: файл заканчивается без ?>
echo "Привет";

Короткий синтаксис echo

php
<!-- Полный -->
<p><?php echo $name; ?></p>

<!-- Короткий (рекомендуется в шаблонах) -->
<p><?= $name ?></p>

<?= $x ?> — это сокращение для <?php echo $x; ?>

Точка с запятой

Каждая инструкция заканчивается точкой с запятой:

php
<?php
echo "Строка 1";
echo "Строка 2";
echo "Строка 3";

Комментарии

php
<?php

// Однострочный комментарий

# Ещё однострочный (реже используется)

/*
   Многострочный
   комментарий
*/

/**
 * DocBlock комментарий
 * Используется для документации функций и классов
 */

12. Упражнение: Страница-визитка

Создай файл about.php:

php
<?php
// Данные (потом будут из базы данных)
$name = "Иван Петров";
$profession = "Начинающий PHP-разработчик";
$email = "ivan@example.com";
$skills = ["HTML", "CSS", "PHP", "MySQL"];
$year_started = 2025;
$current_year = date("Y");
$experience = $current_year - $year_started;
?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= $name ?> <?= $profession ?></title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
            line-height: 1.6;
            padding: 40px;
            max-width: 600px;
            margin: 0 auto;
            background: #f5f5f5;
        }
        .card {
            background: white;
            border-radius: 12px;
            padding: 30px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        h1 {
            color: #333;
            margin-bottom: 5px;
        }
        .profession {
            color: #666;
            margin-bottom: 20px;
        }
        .info {
            margin: 15px 0;
        }
        .info strong {
            color: #333;
        }
        .skills {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            margin-top: 10px;
        }
        .skill {
            background: #e3f2fd;
            color: #1976d2;
            padding: 5px 12px;
            border-radius: 20px;
            font-size: 14px;
        }
        .footer {
            margin-top: 20px;
            padding-top: 20px;
            border-top: 1px solid #eee;
            font-size: 14px;
            color: #999;
        }
    </style>
</head>
<body>
    <div class="card">
        <h1><?= $name ?></h1>
        <p class="profession"><?= $profession ?></p>
        
        <div class="info">
            <strong>Email:</strong> 
            <a href="mailto:<?= $email ?>"><?= $email ?></a>
        </div>
        
        <div class="info">
            <strong>Опыт:</strong> 
            <?php if ($experience < 1): ?>
                Менее года
            <?php else: ?>
                <?= $experience ?> год(а)
            <?php endif; ?>
        </div>
        
        <div class="info">
            <strong>Навыки:</strong>
            <div class="skills">
                <?php foreach ($skills as $skill): ?>
                    <span class="skill"><?= $skill ?></span>
                <?php endforeach; ?>
            </div>
        </div>
        
        <div class="footer">
            Страница сгенерирована: <?= date("d.m.Y H:i:s") ?>
        </div>
    </div>
</body>
</html>

Что нового здесь:

  1. Переменные$name, $skills (начинаются с $)
  2. Массив["HTML", "CSS", "PHP"]
  3. Функция date() — возвращает текущую дату
  4. Условие if/else — выбор между вариантами
  5. Цикл foreach — проход по массиву
  6. Альтернативный синтаксисif(): ... endif; (удобнее в HTML)

Не переживай, если что-то непонятно — мы разберём всё это в следующих главах.


13. Структура проекта

Для простых проектов (Phase 0) используй такую структуру:

my-project/
├── index.php           # Главная страница
├── about.php           # Страница "О нас"
├── contact.php         # Контакты
├── css/
│   └── style.css       # Стили
├── js/
│   └── script.js       # JavaScript (если нужен)
├── images/
│   └── logo.png        # Картинки
└── includes/
    ├── header.php      # Шапка сайта
    └── footer.php      # Подвал сайта

Использование includes

includes/header.php:

php
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title><?= $page_title ?? 'Мой сайт' ?></title>
    <link rel="stylesheet" href="/css/style.css">
</head>
<body>
    <nav>
        <a href="/">Главная</a>
        <a href="/about.php">О нас</a>
        <a href="/contact.php">Контакты</a>
    </nav>
    <main>

includes/footer.php:

php
    </main>
    <footer>
        <p>&copy; <?= date('Y') ?> Мой сайт</p>
    </footer>
</body>
</html>

index.php:

php
<?php
$page_title = "Главная страница";
include 'includes/header.php';
?>

<h1>Добро пожаловать!</h1>
<p>Это главная страница моего сайта.</p>

<?php include 'includes/footer.php'; ?>

Теперь шапка и подвал в одном месте. Изменил один раз — изменилось везде!


14. Отладка: когда что-то не работает

Включи отображение ошибок

В начале PHP-файла (для разработки):

php
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

Или создай файл php.ini в папке проекта:

ini
display_errors = On
error_reporting = E_ALL

Типичные ошибки новичков

1. Белый экран (ничего не показывает)

Причина: Синтаксическая ошибка. PHP не может выполнить код.

Решение: Включи ошибки (см. выше) или проверь лог ошибок.

2. "Parse error: syntax error"

Parse error: syntax error, unexpected '}' in /path/file.php on line 15

Причина: Забыл точку с запятой, скобку, кавычку.

Решение: Посмотри на указанную строку и строку выше неё.

3. "Undefined variable"

Warning: Undefined variable $nmae in /path/file.php on line 10

Причина: Опечатка в имени переменной или переменная не определена.

Решение: Проверь написание. $nmae вместо $name?

4. Страница скачивается вместо отображения

Причина: Веб-сервер не обрабатывает PHP.

Решение: Убедись, что сервер запущен и настроен на обработку .php.

var_dump() — твой лучший друг

php
<?php
$data = ["name" => "Ivan", "age" => 25];

var_dump($data);
// Выведет:
// array(2) {
//   ["name"]=> string(4) "Ivan"
//   ["age"]=> int(25)
// }

Используй var_dump() чтобы посмотреть, что внутри переменной.

die() / exit() — остановка выполнения

php
<?php
$user = getUserFromDatabase();

var_dump($user);
die(); // Остановит выполнение здесь

// Этот код не выполнится
echo "Продолжение...";

15. Полезные команды терминала

PHP CLI

bash
# Версия PHP
php -v

# Выполнить PHP-код
php -r "echo 'Hello';"

# Выполнить файл
php script.php

# Запустить встроенный сервер
php -S localhost:8000

# Запустить сервер с указанием корня
php -S localhost:8000 -t public/

# Проверить синтаксис файла (без выполнения)
php -l file.php

# Список установленных модулей
php -m

# Информация о PHP
php -i

# Найти php.ini
php --ini

Composer (установим позже, но полезно знать)

bash
# Версия
composer -V

# Инициализация проекта
composer init

# Установить зависимости
composer install

# Добавить пакет
composer require vendor/package

# Автозагрузка
composer dump-autoload

16. Чеклист настройки

Убедись, что всё работает:

  • [ ] PHP установлен (php -v показывает версию 8.x)
  • [ ] PHP добавлен в PATH
  • [ ] Веб-сервер запускается (Laragon/XAMPP или php -S)
  • [ ] http://localhost открывается в браузере
  • [ ] VS Code установлен
  • [ ] Расширение PHP Intelephense установлено
  • [ ] Создал файл index.php с echo "Привет";
  • [ ] Файл отображается в браузере
  • [ ] Ошибки PHP видны (если специально допустить ошибку)

17. Упражнения

Упражнение 1: Hello World вариации (10 минут)

Создай файл hello.php и выведи:

  1. Своё имя
  2. Текущую дату в формате "27 января 2026"
  3. Текущее время
  4. Результат вычисления 2 + 2 * 2
php
<?php
// Твой код здесь

Упражнение 2: Страница с переменными (15 минут)

Создай profile.php:

  1. Определи переменные: имя, возраст, город, хобби (массив)
  2. Выведи их в красивом HTML
  3. Добавь CSS стили

Упражнение 3: Includes (20 минут)

  1. Создай структуру с includes/header.php и includes/footer.php
  2. Создай 3 страницы: index.php, about.php, contact.php
  3. Каждая страница должна использовать общие header и footer
  4. Добавь навигацию между страницами

Упражнение 4: Отладка (10 минут)

Найди и исправь ошибки в этом коде:

php
<?php
$name = "Иван"
$age = 25;

echo "Меня зовут $Name, мне $age лет."

$hobbies = ["футбол", "музыка" "книги"];

foreach ($hobbies as $hobby) {
    echo "<li>$hobby</li>"
}

18. Вопросы для самопроверки

  1. Что делает команда php -S localhost:8000?

  2. Почему браузер не видит PHP-код, а только результат?

  3. Для чего нужен <?= $variable ?>?

  4. Почему рекомендуют не ставить ?> в конце файла?

  5. Как включить отображение ошибок в PHP?

  6. Для чего используется include?

  7. Что покажет var_dump()?


19. Частые проблемы и решения

ПроблемаРешение
php не найден в терминалеДобавь PHP в PATH и перезапусти терминал
Белый экранВключи display_errors
Файл скачиваетсяСервер не обрабатывает PHP, проверь настройки
Порт занятИспользуй другой порт: php -S localhost:8080
Кириллица — кракозябрыДобавь <meta charset="UTF-8"> и сохрани файл в UTF-8
Изменения не применяютсяОбнови страницу (Ctrl+F5), проверь правильный файл

Резюме главы

┌────────────────────────────────────────────────────────────────┐
│                      ЗАПОМНИ ГЛАВНОЕ                           │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  • Для PHP нужны: редактор + PHP + веб-сервер                 │
│  • Laragon (Windows) или Homebrew (Mac) — лучший старт        │
│  • Встроенный сервер: php -S localhost:8000                   │
│  • PHP-код внутри <?php ... ?> или <?= ... ?>                 │
│  • Браузер видит только результат, не код                     │
│  • Каждая инструкция заканчивается ;                          │
│  • var_dump() — для отладки                                   │
│  • include — для переиспользования кода                       │
│  • Включай display_errors при разработке                      │
│                                                                │
└────────────────────────────────────────────────────────────────┘

Ответы к упражнению 4 (отладка)

php
<?php
$name = "Иван";  // Добавлена ;
$age = 25;

echo "Меня зовут $name, мне $age лет.";  // $name с маленькой буквы, добавлена ;

$hobbies = ["футбол", "музыка", "книги"];  // Добавлена запятая между элементами

foreach ($hobbies as $hobby) {
    echo "<li>$hobby</li>";  // Добавлена ;
}

Следующая глава: Глава 0.3: Терминал и командная строка — базовые команды, навигация, почему это важно

Выпущено под лицензией MIT