Laravel
Создание веб-приложений на Laravel: маршрутизация, модели Eloquent, аутентификация, очереди и деплой, с практическими примерами, которые пригодятся в реальных проектах.
В этой теме пока нет статей!
Мы ещё не успели написать об этом. Выберите другую тему или загляните позже!
Questions about this topic
Quick, clear answers to what readers ask most about this topic.
Что такое Laravel?
Laravel это бесплатный PHP-фреймворк с открытым исходным кодом для создания веб-приложений. Laravel дает разработчикам готовые части для маршрутизации, работы с базами данных, входа, почты, очередей и тестирования, поэтому повторяющегося кода приходится писать меньше. Фреймворк следует шаблону MVC, модель, представление, контроллер, и имеет большое сообщество.
Для чего используется Laravel?
Laravel используется для создания веб-приложений: систем управления, клиентских порталов, интернет-магазинов, платформ бронирования и API для мобильных приложений. Laravel подходит любому проекту, где есть пользователи, база данных и бизнес-правила. Многие компании ведут на Laravel крупные закрытые системы, потому что фреймворк стабилен и легко расширяется.
Подходит ли Laravel для начинающих?
Laravel хорошо подходит начинающим, которые уже знают основы PHP, потому что его код легко читается, а официальная документация понятна. У Laravel также большое сообщество, множество уроков и стартовые наборы, которые сами создают страницы входа. Если сначала выучить чистый PHP, разобраться во фреймворке будет гораздо проще.
Как установить Laravel на компьютер?
Чтобы установить Laravel, сначала установите PHP и Composer, затем выполните composer create-project laravel/laravel с названием проекта. Установщик Laravel, вызываемый командой laravel new, делает то же самое и предлагает стартовые наборы. После этого php artisan serve запускает локальный сервер, и приложение можно открыть в браузере.
Какая версия PHP нужна для Laravel?
Laravel нужна свежая версия PHP 8, а в каждом релизе Laravel указана минимальная поддерживаемая версия PHP. Новые релизы Laravel отказываются от старых версий PHP, когда у тех заканчивается поддержка безопасности. Всегда проверяйте руководство по обновлению той версии Laravel, которую собираетесь использовать.
Что такое маршрутизация в Laravel?
Маршрутизация в Laravel связывает веб-адрес и HTTP-метод, например GET или POST, с кодом, который на него отвечает. Маршруты описываются в файлах вроде routes/web.php для страниц и routes/api.php для API. Маршрут может вызывать замыкание или метод контроллера и подключать middleware для проверки входа и других проверок.
Что такое Eloquent в Laravel?
Eloquent это ORM в Laravel, то есть часть фреймворка, которая позволяет работать с таблицами базы данных как с PHP-классами, называемыми моделями. Каждая модель соответствует таблице, а каждый объект строке, поэтому данные можно читать и сохранять без SQL. Eloquent также управляет связями, например один ко многим и многие ко многим.
Как работают связи Eloquent в Laravel?
Связи Eloquent в Laravel это методы модели, такие как hasMany, belongsTo и belongsToMany, которые описывают, как связаны две таблицы. После их описания связанные данные можно читать, например $order->customer, без написания join. Жадная загрузка методом with загружает связанные строки за один раз и избавляет от медленных повторных запросов.
Что такое проблема N+1 запросов в Laravel?
Проблема N+1 запросов в Laravel возникает, когда код загружает список записей, а затем для каждой выполняет отдельный запрос за связанными данными. Страница со 100 заказами может выполнить 101 запрос и стать медленной. Жадная загрузка методом with решает проблему, получая связанные строки одним запросом.
Что такое миграции в Laravel?
Миграции в Laravel это PHP-файлы, которые создают и изменяют таблицы базы данных с помощью кода. Команда php artisan migrate применяет их, поэтому у каждого разработчика и на каждом сервере одинаковая структура базы. Поскольку миграции хранятся в системе контроля версий, история каждого изменения таблиц сохраняется.
Что такое Blade в Laravel?
Blade это шаблонизатор Laravel для написания HTML-страниц с простыми тегами для циклов, условий и макетов. По умолчанию Blade экранирует выводимые значения, что защищает страницы от межсайтового скриптинга. Шаблоны компилируются в обычный PHP и кешируются, поэтому Blade почти не добавляет нагрузки на каждый запрос.
Как работает аутентификация в Laravel?
Аутентификация в Laravel работает через guard-ы, которые определяют, кто пользователь, и провайдеры, которые загружают пользователей из базы данных. Стартовые наборы, например Laravel Breeze, добавляют готовые страницы входа, регистрации и сброса пароля. Пароли хешируются с помощью bcrypt или Argon2, поэтому никогда не хранятся в открытом виде.
Чем Laravel Sanctum отличается от Laravel Passport?
Laravel Sanctum дает простой вход по токенам и cookie для одностраничных приложений, мобильных приложений и базовых API, а Laravel Passport это полноценный сервер OAuth2. Большинству проектов достаточно Sanctum, потому что он легче и проще в настройке. Passport подходит, когда внешние приложения должны входить от имени ваших пользователей.
Что такое middleware в Laravel?
Middleware в Laravel это слои, которые проверяют или изменяют запрос до того, как он попадет в ваш код, или ответ до того, как он уйдет. Типичные middleware проверяют вход, защищают от CSRF, ограничивают частоту запросов и устанавливают язык. Middleware можно подключать к отдельным маршрутам, группам маршрутов или ко всему приложению.
Как работают очереди в Laravel?
Очереди в Laravel выносят медленные задачи, например отправку писем или создание отчетов, из веб-запроса в фоновые задания. Задание помещается в драйвер очереди, такой как Redis или база данных, а воркер, запущенный командой php artisan queue:work, его выполняет. Пользователь быстро получает ответ, а тяжелая работа завершается в фоне.
Когда использовать очереди в приложении на Laravel?
Очереди в приложении на Laravel стоит использовать всякий раз, когда задача выполняется дольше мгновения или обращается к внешнему сервису: почта, обработка файлов или вебхуки платежей. Очереди сохраняют скорость страниц и позволяют неудачным заданиям автоматически повторяться. Laravel Horizon дает панель для наблюдения за очередями Redis.
Как запланировать задачи в Laravel?
Задачи в Laravel планируют в планировщике с помощью методов вроде daily или everyFiveMinutes, а на сервере одна запись cron каждую минуту запускает php artisan schedule:run. Дальше планировщик сам решает, какие задачи пора выполнить. Так все задания по расписанию хранятся в коде, а не в множестве отдельных строк cron.
Как проверить данные формы в Laravel?
Данные формы в Laravel проверяют методом validate у запроса или классом Form Request, который хранит правила. Правила вроде required, email, max и unique проверяют каждое поле до того, как код его использует. Если проверка не пройдена, Laravel возвращает пользователя назад с сообщениями об ошибках и ранее введенными данными.
Как Laravel защищает от распространенных веб-атак?
Laravel защищает от распространенных веб-атак с помощью CSRF-токенов в формах, экранирования вывода в Blade, привязки параметров в запросах к базе и хеширования паролей. Эти настройки по умолчанию блокируют подделку межсайтовых запросов, межсайтовый скриптинг и SQL-инъекции при обычном использовании. Разработчикам все равно нужно проверять ввод, права доступа и обновлять фреймворк.
Как развернуть приложение на Laravel на сервере?
Приложение на Laravel разворачивают так: загружают код на сервер, выполняют composer install без пакетов для разработки, настраивают файл .env и запускают миграции. Затем кешируют конфигурацию, маршруты и представления и направляют веб-сервер на папку public. Многие команды автоматизируют эти шаги из Git, чтобы каждый релиз проходил одинаково.
Какой сервер нужен для приложения на Laravel?
Приложению на Laravel нужен сервер с PHP, веб-сервером вроде Nginx или Apache, базой данных, например MySQL или PostgreSQL, и Composer. Часто добавляют Redis для кеша и очередей, а менеджер процессов поддерживает работу воркеров очереди. Hostrena, хостинговый бренд Linkysoft, предлагает хостинг веб-приложений для Laravel с развертыванием прямо из Git.
Как ускорить приложение на Laravel?
Приложение на Laravel ускоряют кешированием конфигурации, маршрутов и представлений, жадной загрузкой связей и индексами на колонках базы, по которым идет поиск. Дополнительно помогают вынос медленной работы в очереди и кеширование тяжелых запросов в Redis. Включение PHP OPcache на сервере дает большой прирост при минимальных усилиях.
Как тестировать приложение на Laravel?
Приложение на Laravel тестируют с помощью PHPUnit или Pest, которые уже настроены в каждом новом проекте. Функциональные тесты отправляют тестовые запросы к маршрутам и проверяют ответ и базу данных, а модульные тесты проверяют отдельные классы. Команда php artisan test запускает весь набор тестов.
Справляется ли Laravel с крупными приложениями с большим числом пользователей?
Да, Laravel справляется с крупными приложениями и множеством пользователей, если работает на хороших серверах с кешированием, очередями, индексами базы данных и несколькими серверами приложения за балансировщиком нагрузки. Сам фреймворк редко становится ограничением, обычно им оказываются медленные запросы и отсутствие кеша. Именно поэтому Linkysoft создает веб-приложения на заказ на PHP, Laravel, MySQL и Redis.
Как часто обновлять версию Laravel?
Обновлять Laravel нужно как минимум до того, как текущая версия перестанет получать исправления безопасности. Laravel выпускает мажорную версию примерно раз в год, и к каждой прилагается руководство по обновлению. Небольшие регулярные обновления намного проще, чем прыжок сразу через несколько версий.