Laravel 5 уроки
Уроки Laravel
Обучающие статьи по Ларавел.
Tailwind и Laravel
Недавно Adam Wathan выпустил Tailwind UI — коллекцию адаптивных компонентов для Tailwind CSS. Проект находится в стадии раннего доступа, поэтому…
Всё о валидации в Laravel
В этой статье мы расскажем, как можно проверить входящие данные через Контроллеры, Запросы формы (FormRequest) и Правила. Контроллеры По умолчанию…
Создание SPA CRUD на Laravel Inertia
Inertia.js — это еще один способ создания SPA (одностраничного приложения). Это не фреймворк и не замена существующих способов. Вся прелесть…
Blade компоненты в Laravel 7
Давайте посмотрим, что седьмая версия фреймворка привнесла в компоненты шаблонов. Макетный способ Сначала взглянем на макетный вариант повторного использования шаблонов.…
Организация ваших шаблонов
Часто наши приложения используют большое количество blade-шаблонов. Когда их становится больше десятка, то вы начинаете создавать их везде, где не…
Обнаружение медленных SQL-запросов
Представляем вам Slow Query Notifier для Laravel. Если пакет обнаружит медленный запрос в вашем приложении, то вы получите уведомление. Вдохновение…
Продвинутые советы по Маршрутизации в Laravel
Все мы используем простой синтаксис Route::get() и Route::post(), но в больших проектах это делать сложнее. В этой статье собраны несколько…
Рефакторинг тестов
Простота — один из главных факторов, почему люди выбирает Laravel. Это касается и тестов — фреймворк позволяет их делать проще,…
Использование кастомных кастов в Laravel 7
Custom Eloquent Cast (Кастомные касты) это пользовательские приведения типов. Исторически вы были ограничены дефолтным набором кастов, предоставленных Laravel, охватывающие только…
Способы валидации данных
Валидация (проверка) данных формы — очень важный фактор защиты от нежелательных данных в приложении. Фреймворк Laravel для этого предоставляет простые,…
Laravel 7 — Что нового?
Laravel 7 вышел 3 марта 2020 года и содержит следующие нововедения и улучшения. Laravel Airlock Автор: Taylor Otwell Laravel Airlock…
Рефакторинг: Сервисы, Статические Методы и Внедрение Зависимостей
Иногда нужно переместить бизнес-логику за пределы Контроллеров или Моделей, обычно в так называемые Сервисы. Но есть несколько способов их использования…
Руководство по Очередям и Задачам. Часть 3: Как запустить воркеры на продакшн-сервере
Теперь, когда вы создали свое первое Laravel-приложение с Очередями/Задачами по первому и второму уроку, пришло время развернуть его на рабочем…
Руководство по Очередям и Задачам. Часть 2: Подключения и настройки
В этой статье мы расскажем об альтернативном подключении очередей и о том, как мы можем использовать несколько разных очередей для…
Руководство по Очередям и Задачам. Часть 1: Создаем простое аналитическое приложение
Я уже много лет использую Задачи и Очереди в Laravel. Поначалу мне было очень тяжело, у меня в голове не…
Laravel — лучшее, что случилось в PHP сообществе!
Laravel — пожалуй, лучшее, что случалось в PHP сообществе! Девиз этого фреймворка — «The PHP Framework For Web Artisans», что можно перевести как «PHP фреймворк для вэб-ремесленников». И это максимально точно описывает его концепцию. Вы просто разрабатываете приложение или сайт полостью сосредотачиваясь на создании продукта, всё остальное на себя берёт фреймворк.
Laravel интуитивно понятен и user-friendly к разработчику. В основе фреймворка лежат так называемые Symfony Components — компоненты которые лежат в основе другого одноимённого фреймворка Симфони, первая версия которого вышла 22 октября 2005, за 5 с лишним лет до появления Laravel.
Laravel вышел 11 июня 2011 и быстро стал популярен за счёт использования уже проверенных в бою симфони-компонент и более удобной работе с ними. В отличии от Symfony, Ларик интуитивно понятен и многие вещи можно реализовывать даже не заглядывая в документацию. Создатель фреймворка Taylor Otwell прочитал ваши мысли и создал такую архитектуру, которая наиболее актуальна в современном мире вэб-разработки.
Laravel это не только фреймворк, но и огромное количество дополнительных сервисов объединённых в единую экосистему. Например, Forge — специальный хостинг для ваших приложений и сайтов. Homestead, Envoyer — простая и удобная система для zero downtime деплоя в production, Horizon — админка для мониторинга Redis, Spark, StyleCI, Statamic и многие другие сервисы упростят разработку приложений.
Если бы я разрабатывал фреймворк для веб-сайтов, то он бы был очень сильно похож на Ларавел, даже если бы я не знал о его существовании.
Самоучитель и уроки Laravel
Здесь будут приведены ссылки на статьи и видео для новичков и продвинутых разработчиков. Список пополняется. Присылайте свои материалы для размещения!
Для новичков
В данной подборке собраны статьи
- Создать новый проект на Laravel 5.6: установка и настройка
- Как узнать что пользователь находится в Online в Laravel 5.6
- Подтверждение регистрации и верификация email в Laravel 5.6
- Роутинг в Laravel: настройка routes
- Шаблонизатор blade: трюки и хитрости
- Работа с датами и временем с помощью Carbon
- Авторизация с помощью модуля Auth
- Что такое Vue и зачем он в Laravel?
- Миграции: лучшие практики
- Работа с моделями: Eloquent Active Records
- Отношения между таблицами
- Collection как замена масивам
- Как сделать редирект в Laravel
- Зачем нужны Middleware?
- Лучшие практики валидации запросов
- Elixir
- Пагинация
- Хранилище файлов
- Сидирование данных и faker
- Логирование событий и ошибок
- Настройка Nginx
- Работа с websocket
Админки
Обзор компонентов позволяющих легко и просто создать бэкофис для приложении, в простонародии называемыми админками.
Обзор всевозможных систем управления содержимым (Content Management System).
Пакеты и библиотеки
Пакеты и компоненты созданные специально для Laravel, либо способы адаптации библиотек под этот фреймворк.
Продвинутый уровень
Работа с ядром фреймворка, переопределение базовых свойств и компонент.
Прочее
Сравнение с другими PHP фреймворками
В своей весовой категории Laravel вне конкуренции по возможностям. Аналогичный функционал предоставляют фреймворки Symfony и Yii, однако они более громозки, требуют чтения огромного количества документации и большего времени на разработку одного и того же функционала. Однако, он не значительно проигрывает им по производительности.
Сравнение PHP фреймворков по количеству запросов в секунду
Сравнение PHP фреймворков по потреблению памяти
Сравнение PHP фреймворков по времени выполнения запроса
С полным отчётом по сравнению фреймворков можно ознакомиться здесь.
Однако, у Laravel есть киллер-фича — легковесный аналог Lumen, микрофреймворк, который в любой момент можно проапгрейдить до полноценного Laravel или установить часть его компонентов.
Для каких целей не подойдёт Laravel?
К сожалению, Ларавел плохо подходит для highload-проектов, т.к. ядро фреймворка достаточно тяжёлое и его инициализация может занимать больше времени, чем полезный функционал самого приложения.
Также он не очень хорошо подходит для разработки консольных приложений и демонов по той же причине, хотя во фреймворке присутствуют компоненты для их создания. Даже для выполнения одной маленькой cli-команды будет грузиться всё ядро и инициализироваться все компоненты задействованные в приложении.
Сомнительным решением станет также разработка REST API и тому подобных сервисов, хотя бы по факту того, что что из коробки этот PHP-фреймворк не содержит компонент для удобной их реализации.
Нет, никто делать этого не запрещает, однако, приложения критичные к ресурсам и производительности лучше разрабатывать на других фреймворках или вообще на других более быстрых языках. Для создания прототипов, MVP и PoC таких систем Laravel отлично подойдёт. Но для сурового продакшена будет требовать в раз больше мощностей, чем приложения написанные на легковесных фреймворках.
Laravel для начинающих и чайников
Вам не придётся читать большое количество документации или книг, чтобы начать создавать сайты на Laravel. Достаточно пары дней чтобы с ноля создать свой небольшой вэб-проект, ознакомляясь с документацией по мере возникновения вопросов. Концепция фреймворка такова, что разработчику нужно думать только о логике самого приложения не беспокоясь о базах данных, средствах кеширования, хранении файлов и пользовательских сессиях.
Благодаря наличию множества фасадов легко реализуется абстрагирование от конкретных реализаций работы с тем или иным хранилищем. Всего одной строчкой в конфигурации можно перевести приложение с MySql на Postgres, с Memcache на Redis, а хранение файлов с локального хранилище на распределённые сервера Amazon. И т.п. Например, получить данные из быстрого кеша можно сделать так:
Ещё одна приятная вещь в Laravel — Fluent Interface, подход в архитектуре, благодаря которому можно строить цепочки вызовов, что делает код легко читаемым, а его написание в IDE становится максимально быстрым. Например, сделать запрос в БД можно таким образом:
Можно много что ещё сказать, но лучше 1 раз попробовать самому, чем 10 раз прочитать о чужом опыте. Начинайте прямо сейчас!
Первое приложение на Laravel. Пошаговое руководство (Часть 1)
Cо дня своего релиза в 2011 популярность фреймворка Laravel выросла на порядок. В 2015 году он стал самым популярным (starred) PHP фреймворком на GitHub. Сегодня Laravel выбирают в качестве основного инструмента разработчики по всему миру.
Laravel сфокусирован на вас, конечных пользователях, что в первую очередь означает нацеленность на простоту, ясность и результат. Крупные компании и разработчики-одиночки используют его для проектов любого рода: от хобби до корпоративных порталов крупнейших компаний мира.
Цель этой статьи — создать руководство для тех, кто только начал изучать Laravel. Начать с идеи и построить реальное приложение.
Это не полное руководство по фреймворку, мы не охватим все детали Laravel и для начала необходимо выполнить ряд условий. Вот, что потребуется:
- Локальная PHP среда (Homestead, Vagrant, MAMP и т.д.)
- База данных. Я буду использовать MySQL.
- PHPUnit
- Node.js
Я попытаюсь пройти через процесс создания нового приложения так же, как я бы сделал это в реальных условиях. На самом деле, код и идея взяты из реально созданного мной проекта
Планирование
Каждый проект где-то берет свое начало, это либо рабочее задание, либо просто идея в вашей голове. Независимо от источника происхождения, функционал проекта необходимо тщательно спланировать прежде чем писать код. Это очень важно.
Как вы планируете зависит от того, как работает ваш ум. Будучи визуалистом, я люблю строить план на бумаге: рисую как будет выглядеть экран, а затем переношу картинку в код. Другие предпочитают написать план проекта в текстовом файле, вики, или любой другой форме. Не имеет значения, как вы планируете, важен сам процесс.
В качестве проекта для этого руководства мы будем делать каталог ссылок. Вот список основных целей для этого приложения:
- Показать простой список ссылок
- Создать форму для добавления новых ссылок
- Проверить данные формы
- Вставить данные в базу данных.
Первые шаги
Пришло время ринуться в бой и развернуть пустой проект. Я люблю хранить все свои рабочие проекты в директории
/Code и везде далее буду использовать этот путь. Вы можете изменить его на более привычный вам.
Откройте терминал и создайте новый каталог для кода проекта.
Затем установите программу установки Laravel :
После завершения процесса , можно создать новый проект, выполнив:
Эта команда создаст новый каталог и установит пустой проект Laravel.
Теперь нужно создать виртуальный хост, ссылающийся на
/Code/links/public, чтобы можно было загрузить сайт в браузере. В качестве домена я использовал links.dev.
Если все работает, вы должны увидеть страницу-заглушку Laravel:
Теперь сгенерируем систему аутентификации использую следующую команду:
Хотя в этом уроке мы не будем вдаваться в систему аутентификации, стоит упомянуть, что эта команда создаст шаблоны и изменит роутинг. Сделаем это сразу, чтобы потом не переживать за вмешательство в наш код. Теперь когда все установлено и работает, приступим к коду.
Создаем список ссылок
Если держать в голове весь проект можно сойти с ума. Лучше разбить все на более мелкие задачи. Так что давайте начнем со списка ссылок.
Несмотря на то, что список ссылок кажется небольшой задачей она требует базу данных, таблицу в базе данных, данные в этой таблице, запрос к базе данных, и файл представления.
Первым шагом будет создание миграции. В этом нам поможет консольный инструмент artisan.
Теперь откройте файл, который создала команда. Он находится по следующему пути database/migrations/<<ДатаВремя>>_create_links_table.php
Внутри метода up добавьте столбцы таблицы
Сохраните файл и запустите миграцию
Теперь надо добавить данные. В Laravel для этой цели есть две функции: заполнение начальными данными (seeding) и фабрики моделей.
Перед тем как продолжить процесс, самое время написать первый юнит-тест. Я предпочитаю делить тесты на две категории: функционал (features) и юниты (unit). Этот тест будет юнит-тестом, поэтому создаем файл ./tests/unit/SeederTest.php и добавляем тестирующий метод :
Этот метод должен выдать ошибку. Запускаем — так и есть
Стоп, мы не это вообще-то тестируем. При установке в Laravel уже есть один тестовый файл ExampleTest.php . Удалите его и запустите phpunit снова.
Теперь мы видим нашу настоящую ошибку
There was 1 failure:
1) SeederTest::testLinksTable Unable to find row in database table [links] that matched attributes [<"ti-tle":"dotdev.co">]. Failed asserting that 0 is greater than 0.
Для того, чтобы этот тест прошел удачно, необходимо создать файл, заполняющий базу данных.
Откройте DatabaseSeeder.php и добавьте следующее в метод run:
Чтобы тест прошел удачно мы могли бы просто добавить новую запись в LinksTableSeeder. Но, мы создадим фабрику модели сейчас, чтобы сэкономить время будущем, тк наши будущие тесты будут на нее завязаны. До того как создать фабрику, необходимо добавить саму модель.
Отредактируем созданную модель app/Link.php добавив имя таблицы в бд:
Теперь вернемся к ModelFactory.php и добавим наши ссылки:
Если мы снова запустим сейчас phpunit, ошибка все еще будет, т.к. ссылки с названием “dotdev.co” в базе еще нет. В нашем SeederTest мы можем создать эту запись в бд с помощью той же фабрики моделей:
Теперь, если выполнить phpunit все должно завершиться успешно.
Следующий шаг – собственно вывод самого списка ссылок. И само время написать новый тест.
Создаем новый файл ./tests/features/LinkTest.php. Спросим себя: что мы ожидаем увидеть? На странице списка ссылок мы можем найти известную нам ссылку, как мы делали выше, и подтвердить, что мы реально ее видим. Вот код такой проверки:
Phpunit снова выдает ошибку, что искомая строка не найдена. Откроем карту машрутов ./app/Http/routes.php и посмотрим куда указывает маршрут «/» .
Давайте сделаем выборку наших ссылок и отправим их в представление.
Отредактируем welcome.blade.php добавив простой цикл foreach:
Теперь phpunit позеленел. Тесты прошли успешно.
Мои поздравления! Первая функция реализована и покрыта тестами. Ничего не ломайте 😉
Блог на Laravel 5 (часть 3) Контроллеры
Сделаем контроллеры для нашего приложения. Будем использовать следующие команды для генерирования контроллеров:
Эти команды создадут три файла в папке app/Http/Controllers.
PostController:
Мы будем отправлять файлы отображения (html текст) после обработки запросов. Мы сделаем эти файлы отображения в следующем уроке. Откройте файл app/Http/Controllers/PostController.php.
Вывести все посты:
На главной странице нам нужно показать 5 постов с пагинацией. Функция index() класса PostController — это обработка запроса в корень сайта (localhost:8000). Давайте обновим функцию index():
Создание нового поста:
Для создания нового поста нам нужно отправить форму на запрос пользователя. Во-первых, мы проверим или у данного пользователя есть разрешения для постинга или нет (только авторы и администратор может публиковать посты) далее мы будем возвращать форму для создания поста. Обновите функцию create() следующим образом:
Пока что мы не создали отображение ‘post.create’. Это отображение содержит html код формы. Мы создадим это отображение в следующих уроках.
Хранение постов:
Когда пользователь отправит форму, нам нужно проверить её и сохранить. Для валидации, мы используем PostFormRequest. Создайте файл с именем PostFormRequest.php в app/Http/Requests с этим кодом:
Функция authorize() проверяет или у пользователя есть права для отправки формы. Если пользователь имеет права для постинга. Правила валидации определены функцией rules(). Множественные правила одинаковых данный (таких как название разделяются (|).
Мы будем использовать эту валидацию класса PostController. Обновите функцию магазина store() с этим кодом.
Также не забывайте включать PostFormRequest в PostController.php. Обновите верхнюю секцию PostController.php:
Выведите отдельные посты с комментариями:
Эта функция принимает псевдоним как аргумент и в 3 строке делается выборка поста из базы данных. Если пост существует, тогда делается выборка комментариев. эта связь между моделью Post и комментариями определена в функции comments() в модели Post.
Редактирование поста:
Теперь мы будем отправлять форму для редактирования поста:
В строке 3 мы получаем пост из базы данных и в строке 4 мы проверяем достаточность прав делающего запрос пользователя (администратора или автора поста).
Обновление поста:
Мы будем получать эту форму для редактирования и будем обновлять базу данных.
Удаление поста:
Финальная функция PostController это destroy(). Она удаляет пост. Только автор или администратор имеет право удалить пост.
Контроллер комментариев CommentController:
Для простоты мы определили только один метод для создания комментариев. Для добавления других функций, вы можете определить больше функций к CommentController совсем как мы добавили к контроллеру PostController.
К этому моменту мы не добавляем какой-либо код к контроллеру UserController. Мы будем использовать этот контроллер для вывода постов и черновиков отдельного автора и также для создания профиля пользователей. Мы определим этот контроллер в 5й части этой серии уроков.
Laravel
Изучение Laravel / #1 — Что такое фреймворк Laravel?
Видеоурок
Полезные ссылки:
- Курс по языку PHP ;
- Официальный сайт Laravel ;
- Редактор Atom ;
- Редактор PhpStorm ;
- Локальный сервер MAMP ;
- Пакетный менеджер Composer .
Laravel — это MVC фреймворк для быстрого, удобного и, главное, правильного написания сайтов на языке PHP. Фреймворк обладает большим набором функций, плагинов и шаблонов, которые позволяют воплощать даже самые амбициозные проекты в жизнь.
Веб-фреймворк Laravel имеет открытый код и распространяется абсолютно бесплатно для всех разработчиков. Исходный код проекта можно найти на странице GitHub .
Фреймворк часто удостаиваться различных наград и похвал. К примеру, Laravel получает звание лучшего PHP фреймворка как для корпоративного, так и для личного использования. Популярность фреймворка постоянно растёт:
Laravel стоит использовать хотя бы по той причине, что он позволяет писать функциональный и очень чистый и красивый код. Ведь, если пишешь сам, то точно можно где-то что-то реализовать не особо здорово, а вот через этот фреймворк все получается красиво и правильно.
Laravel позволяет выполнить такие действия, как: Unit тестирование, отслеживание URL адресов, установка безопасности, работа с сессиями и создание системы авторизации, легкая работа с базой данных, работа с почтой, отслеживание ошибок и еще множество других вещей. Все это возможно реализовать и без Laravel, но используя его вы будете использовать уже готовые решения, а также ваш код получится намного проще и меньше, нежели писать все самостоятельно.
Установка Laravel
Перед установкой Laravel вам необходимо выполнить установку пакетного менеджера Composer. Для этого перейдите на их официальный сайт и скопируйте 4 команды для скачивания и установки Composer в проект. Эти команды укажите в терминале находясь в самом проекте.
После установки Composer можно выполнить установку Laravel. Для этого зайдите в проект и откройте терминал. В терминале пропишите команду:
Эта команда позволит установить Laravel глобально в систему. Выполните её лишь один раз и при создании будущих проектов игнорируйте данную команду, не устанавливая Laravel повторно.
Далее необходимо установить Laravel локально внутрь какого-либо проекта. Для этого в терминале пропишите команду:
Здесь APP_NAME это название вашего будущего проекта.
После установки Laravel будет добавлен к вам в проект и вы уже сможете им пользоваться.
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца