Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Настройка ORM

Этот курс состоит из двух видов практик. Одна выполняется в редакторе Хекслета, другая — на собственном компьютере. Для работы последней, нужно настроить 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 = 'test@email.com'
=> "test@email.com"
# Сохранение в базу
>>> $user->save()

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

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

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

  1. Выполните шаги указанные в уроке.
  2. Изучите исходный код конфигурационных файлов.

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

  1. Готовый репозиторий

<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

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

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

Для полного доступа к курсу, нужна профессиональная подписка

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

Получить доступ
115
курсов
892
упражнения
2241
час теории
3196
тестов

Зарегистрироваться

или войти в аккаунт

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

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».

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

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

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

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».