Этот курс состоит из двух видов практик. Одна выполняется в редакторе Хекслета, другая — на собственном компьютере. Для работы последней, нужно настроить Composer и подключить ORM. Этот процесс достаточно сложен даже для опытного разработчика, поэтому мы пойдём простым путём. Вам будет необходимо склонировать к себе готовый репозиторий и проверить его работоспособность:

$ git clone https://github.com/hexlet-components/php-eloquent-blog
$ cd php-eloquent-blog
$ make setup # установка зависимостей
$ make test # запуск тестов
# тут побегут SQL-запросы
OK (2 tests, 2 assertions)

Если на этом этапе вы увидите ошибки, то с большой вероятностью у вас не установлена поддержка SQLite в PHP. Чтобы её включить, вам нужно найти пакет, обходимый для вашей версии операционной системы и PHP. Для этого попробуйте набрать в гугл: "php install sqlite <тут название вашей операционной системы>"

В качестве базы данных в этом проекте используется SQLite. Такой выбор никак не влияет на работу с ORM, но значительно упрощает настройку и запуск кода на выполнение. SQLite в отличие от больших СУБД, хранится в одном файле и работает напрямую из кода. Под неё не поднимается отдельное приложение в системе.

Основные части репозитория

  • src/ – Здесь лежат модели и фабрики. Это основные элементы ORM. Подробнее о них дальше по курсу.
  • tests/ – Все сценарии работы с ORM описаны в виде тестов.
  • composer.json – Содержит библиотеки, необходимые для работы Eloquent.
  • src/config/loaders.php – В этом файле находится вся конфигурация. Функция bootstrap() создаёт файл для базы данных и инициализирует Eloquent. После выполнения этого метода, ORM готова к использованию.
  • db-prepare.php – Файл, запускаемый во время настройки сетапа. Он пересоздаёт базу данных и загружает туда тестовые данные.
  • src/config/scheme.php – Содержит схему базы данных.
  • tests/BaseTest.php – базовый класс для тестов. Внутри него происходит настройка приложения.

REPL (Tinker)

Лучший способ "поиграться" с кодом данного проекта – использовать Tinker. Это REPL (командная строка), встроенный в Laravel. С его помощью можно загрузить приложение в память, запустить интерпретатор и вызывать любой код приложения прямо из командной строки, взаимодействуя с базой данных. Tinker работает как для самостоятельной работы, так и в практике на сайте. Для его запуска наберите:

php-eloquent-blog$ make console
./vendor/bin/psysh
Psy Shell v0.9.9 (PHP 7.3.8 — cli) by Justin Hileman
>>>

Если на экране появилось приглашение для ввода >>> значит всё получилось. Вы находитесь внутри Tinker и можете работать с приложением. Попробуйте набрать следующий код (он будет объясняться дальше по курсу):

# Создание нового объекта пользователя
>>> $user = new App\User()
=> App\User {#2394
     +incrementing: true,
     +exists: false,
     +wasRecentlyCreated: false,
     +timestamps: true,
   }
# Установка email
>>> $user->email = '[email protected]'
=> "[email protected]"
# Сохранение в базу
>>> $user->save()

string(74) "insert into "users" ("email", "updated_at", "created_at") values (?, ?, ?)"
=> true

В последующих уроках будет много примеров кода. Не забывайте запускать репл и выполнять его там. Это поможет лучше разобраться с материалом и закрепить его на практике.

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

  1. Выполните шаги указанные в уроке.
  2. Изучите исходный код конфигурационных файлов.
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →