Этот курс состоит из двух видов практик. Одна выполняется в редакторе Хекслета, другая — на собственном компьютере. Для работы последней, нужно настроить 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/schema.php – Содержит схему базы данных.
- tests/BaseTest.php – базовый класс для тестов. Внутри него происходит настройка приложения.
REPL (PsySH)
Лучший способ "поиграться" с кодом данного проекта – использовать PsySH. С его помощью можно загрузить приложение в память, запустить интерпретатор и вызывать любой код приложения прямо из командной строки, взаимодействуя с базой данных. PsySH работает как для самостоятельной работы, так и в практике на сайте. Для его запуска наберите:
make console
./vendor/bin/psysh
Psy Shell v0.9.9 (PHP 7.3.8 — cli) by Justin Hileman
>>>
Если на экране появилось приглашение для ввода >>>
значит всё получилось. Вы находитесь внутри PsySH и можете работать с приложением. Попробуйте набрать следующий код (он будет объясняться дальше по курсу):
# Создание нового объекта пользователя
>>> $user = new App\Models\User()
=> App\Models\User {#2394
+incrementing: true,
+exists: false,
+wasRecentlyCreated: false,
+timestamps: true,
}
# Установка email
>>> $user->email = 'test@email.com'
=> "test@email.com"
# Сохранение в базу
>>> $user->save()
string(74) "insert into "users" ("email", "updated_at", "created_at") values (?, ?, ?)"
=> true
В последующих уроках будет много примеров кода. Не забывайте запускать репл и выполнять его там. Это поможет лучше разобраться с материалом и закрепить его на практике.
Самостоятельная работа
- Выполните шаги указанные в уроке.
- Изучите исходный код конфигурационных файлов.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.