Зарегистрируйтесь, чтобы продолжить обучение

Микрофреймворк Slim Веб-разработка на PHP

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

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

Веб-фреймворки подразделяются на две большие группы: фреймворки и микрофреймворки.

Микрофреймворки устроены проще и содержат только минимально необходимую обвязку для комфортной работы в архитектуре HTTP — запрос-ответ. Они подходят для обучения, потому что просты в эксплуатации и не отвлекают от главного.

Slim

Создадим подходящую структуру директорий в своей домашней директории:

.
├── hexlet-slim-example
│   └── public

Далее создадим репозиторий внутри hexlet-slim-example и добавим его на GitHub. Не забудьте создать файл .gitignore и поместить туда директорию vendor. hexlet-slim-example теперь называется корневой директорией проекта (root directory).

Затем идем в корневую директорию проекта и устанавливаем Slim и его зависимости:

composer require slim/slim slim/psr7 slim/http slim/php-view php-di/php-di

Добавляем файл hexlet-slim-example/public/index.php со следующим содержимым:

<?php

// Подключение автозагрузки через composer
require __DIR__ . '/../vendor/autoload.php';

use Slim\Factory\AppFactory;

$app = AppFactory::create();
$app->addErrorMiddleware(true, true, true);

$app->get('/', function ($request, $response) {
    $response->getBody()->write('Welcome to Slim!');
    return $response;
    // Благодаря пакету slim/http этот же код можно записать короче
    // return $response->write('Welcome to Slim!');
});
$app->run();

Создадим файл Makefile в корне проекта и добавим туда задачу start:

start:
	php -S localhost:8080 -t public public/index.php

Теперь выполним запуск:

make start

Вывод должен быть примерно таким:

[Wed May 27 17:05:25 2020] PHP 7.4.3 Development Server (http://localhost:8080) started

Эта команда содержит новую для нас опцию -t. С ее помощью меняется корневая директория — место, где происходит поиск файла index.php. Подобную директорию принято называть public и помещать в нее только то, что можно открыть напрямую из браузера. Остальное не должно лежать в этой директории, иначе нас могут взломать.

В конце открываем в браузере localhost:8080. Если все хорошо, то на экране появится надпись Welcome to Slim!:

Slim welcome page


Самостоятельная работа

Выполните все шаги из этого урока на своем компьютере. Придумайте проекту имя. Запушьте его на GitHub. Проект нам понадобится в дальнейших уроках.


Дополнительные материалы

  1. Утилита Make
  2. Микрофреймворк Slim

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»