Включите исполнение JavaScript в браузере, чтобы запустить приложение.

PHP-фреймворк Laravel: основы работы

Мы подготовили подробное руководство по фреймворку Laravel для начинающих. Разберем особенности и основные преимущества Laravel, отличия от других PHP-фреймворков и области применения. Как создать свой первый сайт или приложение на фреймворке Laravel.
  1. Что такое Laravel
  2. Отличия Laravel от аналогов
  3. Возможности и преимущества Laravel
  4. Миграции
  5. Работа с таблицами
  6. Переменные
  7. Недостатки Laravel
  8. Какие проекты можно делать на Laravel Framework
  9. Создание сайтов
  10. Приложения
  11. С чего начать работу с Laravel
  12. Как установить Laravel
  13. Создаем первый проект на Laravel

Для программирования на любых языках и платформах используются фреймворки — наборы готовых методов и библиотек, из которых можно быстро собрать программный продукт. В каждой сфере разработки популярны свои инструменты. Например, для создания приложений на PHP применяется Laravel — «Ларавел» или «Ларавель». Рассказываем, что это такое и как работает.

Что такое Laravel

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

«Ларавель» создан в 2011 году программистом Тейлором Отвеллом на основе Symfony Framework. Уже первая сборка включала модули аутентификации, маршрутизации, локализации и другие блоки, необходимые для работы веб-систем. Сейчас Laravel позволяет решать практически любые задачи, возникающие на жизненном цикле проекта.

Экосистема ориентирована на архитектуру MVC: Model — View — Controller, при которой все компоненты системы по функциональности делятся на три группы:

  • model — предоставление данных и способов их обработки внутри системы;
  • view — отображение данных в пользовательском интерфейсе;
  • controller — взаимодействие между системой и пользователем.

«Ларавель» относится к open source software — это бесплатное программное обеспечение с открытым исходным кодом.

Отличия Laravel от аналогов

«Ларавель» — самый популярный фреймворк для PHP. По количеству репозиториев на GitHub он в несколько раз опережает своих основных конкурентов Yii и Symfony.

Столь широкое распространение инструмент получил за счет нескольких особенностей:

  • лаконичного синтаксиса, который легко читать и понимать;
  • встроенного компонента ORM Eloquent для работы с базами данных через интуитивно-понятные методы выполнения запросов;
  • возможности установки среды разработки с полным комплектом утилит;
  • шаблонизации — применения готовых модулей с шаблонами интерфейса, функций и процедур;
  • удобного способа определения маршрутов и контроллеров;
  • множества встроенных функций — аутентификации, авторизации, кэширования, отправки электронной почты, что значительно сокращает время разработки приложений;
  • инструментов тестирования кода.

Система подходит для программистов всех уровней, в том числе начинающих. Чтобы получить доступ к полному функционалу, не нужно ничего самостоятельно устанавливать и настраивать. Достаточно запустить образ виртуальной машины Laravel Homestead, который уже включает все необходимое для работы.

Благодаря этим отличиям многие разработчики выбирают «Ларавель» для создания стабильных, надежных и безопасных веб-приложений. Следствием высокой популярности является большое активное комьюнити, которое обеспечивает:

  • постоянные улучшения экосистемы;
  • обилие документации и обучающих ресурсов в сети;
  • информационную поддержку на русском и английском языках.

С 2013 года регулярно проводятся конференции Laracon, где представители мирового IT-сообщества обмениваются опытом и делятся наработками.

Возможности и преимущества Laravel

Платформа универсальна — с ее помощью можно внедрять сложные функции, масштабировать проекты, создавать мультиязычные сервисы и высокопроизводительные приложения.

Возможности экосистемы:

  • поддержка баз SQL и noSQL;
  • конструктор Fluent для быстрого построения запросов к базе;
  • шаблонизатор Blade для быстрого перевода HTML-шаблонов в готовые страницы;
  • управление кэшированием;
  • интерфейс командной строки для работы с Docker;
  • совместимость с любыми редакторами кода;
  • автоматическая проверка входящих данных с настраиваемой логикой валидации;
  • система модульного тестирования PHPUnit для контроля работоспособности фрагментов кода;
  • встроенные механизмы защиты данных.

Каждая из перечисленных возможностей формирует преимущества Laravel. Например, поддержка noSQL позволяет создавать системы с более высокой производительностью и скоростью работы, чем при организации хранения данных в БД SQL.

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

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

Таким образом, к преимуществам экосистемы можно отнести следующие факторы:

  • высокую производительность;
  • удобство кодинга, тестирования и отладки программного обеспечения;
  • масштабируемость;
  • безопасность приложений.

Фреймворк Laravel предоставляет встроенную систему аутентификации, токены для защиты от атак CSRF — Cross-Site Request Forgery, библиотеки шифрования данных и хеширования паролей, технологию экранирования данных для защиты от скрытого внедрения SQL-кода. Эти возможности делают приложения устойчивыми перед кибератаками, попытками взлома и внедрения вредоносного кода.

Миграции

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

Управление данными в базах реализовано не через SQL-скрипты, а с помощью фрагментов PHP-кода.

Чтобы создать новую миграцию, нужно выполнить следующую команду:

php artisan make:migration create_users_table

Эта команда создает документ в папке database/migrations. Документ содержит два метода:

  • метод up() — определяет действия, например, создание нового объекта, столбцов и индексов в базе данных;
  • метод down() — отменяет действия, выполненные методом up(), например, удаляет объект или столбцы.

Чтобы применить все migrations, нужно выполнить команду php artisan migrate. Этот синтаксис применяется при командной работе над проектом, когда нужно синхронизировать изменения, внесенные несколькими программистами.

За отмену последней партии изменений отвечает команда rollback. За полную отмену изменений — команда reset, которая откатывает базу данных к исходному состоянию.

Наполнять базу начальными данными можно и с помощью специальных классов в database/seeds. Из определенного по умолчанию класса DatabaseSeeder можно запускать другие начальные классы методом call, чтобы контролировать порядок заполнения БД.

Работа с таблицами

«Ларавель» предлагает независимый от БД интерфейс для манипулирования табличными данными — класс Schema. С его помощью можно создавать, переименовывать и удалять объекты, проверять существование столбцов, подключаться к базам и выполнять другие действия.

Например, для создания табличного элемента предназначен метод create() класса Schema. Метод принимает два аргумента:

  • имя таблицы;
  • функцию-замыкание, которая принимает новый объект Blueprint.

Blueprint определяет столбцы и их свойства.

Основные методы табличного конструктора:

  • $table->string('name', 100) — создает строковый столбец с заданным именем и указанной длиной, в нашем примере — с именем name и длиной 100;
  • $table->text('description') — создает текстовый столбец с указанным именем (description);
  • $table->integer('votes') — создает целочисленный столбец;
  • $table->decimal('amount', 5, 2) — создает десятичный столбец с указанной размерностью и точностью, в нашем примере — с пятью цифрами и двумя знаками после запятой;
  • $table->timestamps() — создает столбцы created_at и updated_at.

Пример кода для определения в базе нового табличного элемента с именем products:

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration

{

    public function up()

    {

        Schema::create('products', function (Blueprint $table) {

            $table->id(); // Создает столбец ID с автоинкрементом и типом big integer (primary key)

            $table->string('name'); // Создает строковый столбец name

            $table->text('description'); // Создает текстовый столбец description

            $table->decimal('amount', 5, 2); // Создает десятичный столбец amount с точностью 5 и масштабом 2

            $table->integer('quantity'); // Создает целочисленный столбец quantity

            $table->timestamps(); // Создает столбцы created_at и updated_at, которыми автоматически управляет фреймворк

        });

    }

    public function down()

    {

        Schema::dropIfExists('products'); // Удаляет объект products, если он существует

    }

}

Первые три строки кода описывают импортируемые классы:

  • Migration — базовый класс для всех миграций;
  • Blueprint — определяет табличную структуру, например, столбцы и индексы;
  • Schema — фасад с методами для работы с базой данных.

Далее следуют команды создания нового объекта и определения его характеристик — столбцов и их свойств.

Метод up() определяет создание табличного объекта products с заданными столбцами.

Метод down() отвечает за удаление объекта products при откате изменений.

Переменные

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

Пример значений переменных окружения:

  • APP_NAME= GV — определяет имя приложения, в нашем случае — GV;
  • APP_ENV=local — определяет окружение, в нашем случае — разработку на локальной машине;
  • APP_DEBUG=true — включает режим отладки.

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

Также «Ларавель» поддерживает локальные и глобальные переменные. Локальные можно применять внутри методов и функций в любом месте приложения. Глобальные переменные, которые должны быть доступны на любой странице сервиса, хранятся в папке config/ и вызываются функцией config().

Недостатки Laravel

Платформа использует сторонние composer-пакеты, что ведет к зависимости от их поддержки и обновлений. Например, уязвимости во внешнем пакете могут поставить под угрозу безопасность всего приложения. А прекращение поддержки одного из composer приведет к отказу системы или сокращению ее функциональности.

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

«Ларавель» не подходит сложным проектам с нестандартными требованиями к архитектуре или функциональности. Фреймворк можно адаптировать практически под любую задачу, но в некоторых случаях это нерационально, так как требует слишком много времени и ресурсов. Проблема особенно актуальна для разработчиков с небольшим опытом. Несмотря на обилие документации, новичкам может быть трудно освоить все возможности системы. А с ростом числа используемых компонентов и пакетов растет объем кода, что делает процессы отладки и обслуживания сложнее.

Какие проекты можно делать на Laravel Framework

Основная сфера применения Laravel Framework — разработка онлайн-сервисов, интернет-платформ и приложений с доступом из браузера.

Примеры проектов с использованием «Ларавель»:

  • одностраничные лендинги;
  • многостраничные онлайн-ресурсы, в том числе интернет-магазины;
  • серверы API для мобильных или одностраничных JavaScript-приложений;
  • системы управления контентом CMS;
  • корпоративные CRM-системы;
  • соцсети;
  • платежные сервисы.

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

Создание сайтов

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

Алгоритм действий для создания любого интернет-ресурса состоит из следующих шагов:

  1. Разработка структуры.
  2. Создание базы и моделей данных с помощью Eloquent ORM.
  3. Создание контроллеров для обработки входящего трафика от клиентской части сервиса.
  4. Составление правил маршрутизации, например, через routes/web.php.
  5. Формирование шаблонов для отображения контента с помощью шаблонизатора Blade.
  6. Подключение модулей аутентификации и других блоков в соответствии с логикой сервиса.
  7. Интеграция сторонних сервисов, например модуля приема платежей для интернет-магазина, получение информации по API с внешних ресурсов.
  8. Автоматическое тестирование с помощью встроенных инструментов платформы.
  9. Проверка скорости и производительности сервиса.
  10. Отладка.
  11. Подготовка сервера и развертывание ПО.

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

Приложения

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

Так как «Ларавель» опирается на архитектуру MVC, логику приложения нужно разделить на три части:

  • внутренние модели данных;
  • пользовательское представление в интерфейсе;
  • контроллеры для взаимодействия первых двух блоков.

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

Затем можно подключить модуль аутентификации пользователей, например, с помощью встроенных пакетов Breeze или Jetstream. После подключения выбранного пакета система автоматически подгружает алгоритмы маршрутизации, управления данными и представления.

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

С чего начать работу с Laravel

Чтобы работать с платформой, нужно знать концепции объектно-ориентированного программирования и разбираться в классах, объектах, свойствах, методах, зависимостях и типажах. Поэтому первый этап — погружение в основы ООП. Необходимо создать хотя бы один проект на PHP, изучить Composer для управления библиотеками и другие инструменты разработки.

После этого можно переходить к установке «Ларавель» и созданию первого приложения.

Как установить Laravel

Самый простой способ — загрузка и запуск виртуальной машины Homestead в качестве локальной среды разработки. Образ виртуальной машины содержит в себе все необходимые компоненты — этот вариант инсталляции является рекомендованным.

Альтернативный метод — установка Laravel вручную. Для этого нужен сервер с PHP не ниже 5.6.4 и следующими расширениями:

  • OpenSSL;
  • PDO;
  • Mbstring;
  • расширение токенизатора;
  • XML-расширение.

Убедитесь, что все необходимые компоненты нужных версий установлены на сервере. Затем скачайте и установите Composer — модуль, которым пользуется «Ларавель» для установки и контроля зависимостей.

После настройки Composer можно переходить к установке самого фреймворка. Для этого выполните команду:

composer global require laravel/installer

Далее создайте новую установку с помощью следующей команды:

laravel new GV

В этом примере команда создает каталог с именем GV, который содержит новую установку платформы со всеми предустановленными зависимостями.

Другой способ инсталляции — использование команды create-project для Composer в терминале:

composer create-project --prefer-dist laravel/laravel GV "5.4.*"

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

Создаем первый проект на Laravel

Создайте новый каталог с помощью рассмотренных выше команд и откройте его в редакторе кода. На этом этапе у вас есть пустой проект с заданным названием, в нашем примере — GV.

Чтобы запустить локальный сервер разработки, который обслуживает новый проект, введите следующую команду:

php artisan serve

Система сообщит адрес доступа к вашему приложению. Откройте указанный адрес в браузере — вы увидите дефолтный экран Laravel.

Все файлы конфигурации хранятся в каталоге config. Для работы над первым проектом можно не менять настройки и применить конфигурацию по умолчанию.

В документе .env можно подключить к приложению базу данных. «Ларавель» в формате коробочного решения поддерживает реляционные БД:

  • MariaDB 10.10 и новее;
  • MySQL 5.7 и выше;
  • PostgreSQL 11.0 и выше;
  • SQLite 3.8.8 и выше;
  • SQL Server 2017 и выше.

Работать с MongoDB, Redis и другими NoSQL-системами тоже можно через драйверы. Необходимо скачать, установить и активировать расширение для взаимодействия с выбранной СУБД. Конфигурация служб баз данных хранится по адресу config/database.

После подключения БД можно настроить миграцию, если база уже существует. Если базы еще нет, можно создать новую локальную SQLite, следуя подсказкам системы. По умолчанию БД создается в database/database.sqlite.

Далее можно писать код для реализации идеи вашего приложения. Это можно делать в любом редакторе, например в PHPStorm. Управлять проектом можно в интерфейсе командной строки Sail — это встроенное решение Laravel для взаимодействия с конфигурацией Docker. Sail доступен на MacOS, Windows и Linux.

Хранить исходный код и вести разработку можно на GitVerse. Это российская платформа для развития программных продуктов с технологичными инструментами и большим комьюнити. Чтобы попробовать все возможности и функции, зарегистрируйтесь в GitVerse.