Как освоить Laravel в кратчайшие сроки и с максимальной эффективностью. Почему Laravel? За столько лет практики я повидал (и применял) очень много самых разных фреймворков, и мне есть, с чем сравнить. И я могу со всей уверенностью сказать, что среди PHP-фреймворков, Laravel – это фреймворк №1 при создании сайтов (и не только сайтов, а вообще любых Web-приложений).
Преимущества Laravel:
1. Использование PHP. PHP достаточно прост в изучении, а в последние годы он ещё и заметно улучшился в плане производительности и качества самого кода. Вдобавок, любой нормальный хостинг поддерживает PHP и стоит он копейки, в отличие от хостинга, который поддерживает тот же Python и уж, тем более, какую-нибудь Java. Дополнительно, сайты на PHP намного легче развёртывать. Никаких танцев с бубнами, просто залить все файлы сайта, импортировать базу данных и сделать минимальные настройки, как правило, в одном файле. Всё, сайт уже в Интернете. А вот с проектом на том же Python такой фокус уже не пройдёт.
2. Очень высокая скорость разработки. Я собаку съел на создании сайтов без фреймворков. И это крайне сложный и долгий процесс, имеющий колоссальное количество подводных камней. Так вот Laravel упрощает и ускоряет процесс разработки в несколько раз.
3. Высокая безопасность. При разработке сайта с нуля велика вероятность допустить очень большое количество ошибок (даже опытному разработчику), часть из которых может быть очень критичной. Как итог, это может привести ко взлому сайта. В Laravel же уже всё сделано так, что критичные ошибки будет сложно допустить даже специально, не говоря уже о случайности. Защита от SQL-инъекций, XSS, CSRF – всё это уже есть в самом фреймворке. Поэтому для успешного создания защищённых проектов на Laravel не требуется высокая квалификация и большой опыт.
4. Огромные возможности. Нет такой задачи у Web-приложений, которую нельзя было бы решить на Laravel. Интернет-магазин, поисковая система, почтовый сервис, блог, сайт-визитка, корпоративный сайт – всё это можно создать на Laravel, причём в разы быстрее и проще, чем если пытаться делать это с нуля.
5. Отличная расширяемость. Есть много различных модулей для Laravel, которые позволят легко и быстро подключить очередной сложный блок (например, авторизации через различные сервисы).
6. Все необходимые инструменты уже идут из коробки. Поддержка самых разных СУБД (систем управления базами данных), маршрутизация, реализованный паттерн MVC (Model-View-Controller), регистрация/авторизация пользователей, ORM (процесс отображения объектной модели на реляционную модель базы данных) и многое-многое другое.
7. Поддержка мультиязычности. Удобней, чем это сделано в Laravel, я не видел нигде больше.
8. Открытый исходный код. Это очень важный пункт, и любой специалист Вам это подтвердит.
9. Очень большое сообщество. Среди огромного множества всех PHP-фреймворков, Laravel занимает целых 25% и является абсолютным лидером. Ближайший конкурент имеет долю в 2 раза меньшую. Что даёт большое сообщество? А то, что уже написано и пишется огромное количество бесплатных качественных и протестированных модулей, которые сэкономят десятки часов разработки. Вдобавок, если возникает какой-то вопрос, то найти на него ответ не составляет труда. Мне доводилось работать с одной системой, у которой было слабое комьюнити, и это была просто пытка. С Laravel же таких проблем за последние несколько лет у меня не было ни разу. Ответ на любой вопрос я всегда без проблем находил.
10. Бесплатно. Использование Laravel абсолютно бесплатно, в том числе, и в коммерческих целях.
11. Высокая востребованность у работодателей. Это следует из пунктов выше, но степень востребованности и уровень зарплат, мы обсудим ниже.
Содержание курса:
Раздел №1. Введение
1. Как проходить курс? В уроке будут даны важные рекомендации по эффективному прохождению курса.
2. Особенности Laravel. В уроке разбирается механизм работы Laravel изнутри, что, на мой взгляд, является очень важным, поскольку квалифицированный специалист обязан знать, как работает его инструмент, а не воспринимать его как магию. В этом же уроке Вы узнаете, каков процесс создания сайта на Laravel прямо по шагам.
3. Установка необходимого ПО. Установим всё необходимое для работы Laravel.
4. Установка Laravel. Здесь, кстати, помимо установки, мы разберём много нюансов, об которые новички спотыкаются. Но все они будут разобраны в этом уроке.
Раздел №2. Основы Laravel
1. Структура директорий. Разберём все директории и поддиректории проекта на Laravel. Это очень важная информация, которой многие пренебрегают.
2. Конфигурирование. У Laravel множество настроек самых разных систем, с которыми Вы познакомитесь в этом уроке.
3. Знакомство с Artisan и режим обслуживания. Artisan – это отличный помощник, ускоряющий многие процессы разработки, а также выполняющий различные важнейшие задачи (например, миграцию базы данных).
4. Маршрутизация. Благодаря маршрутизации фреймворк понимает, какой код выполнять при том или ином запросе.
5. Ограничение частоты запросов. Во избежание брутфорса (подбора пароля), а также бесконечного флуда, часто приходится ограничивать частоту запроса. И вот как это сделать, Вы узнаете в этом уроке.
6. Посредники. Важнейший элемент Laravel – это посредники, которые позволяют фильтровать запросы. И, например, сразу отклонять тех, кто пытается получить доступ туда, куда он его не имеет. Или, например, блокировать тех, кто пытается сделать межсайтовый запрос. Вот всё это и не только мы обсудим в этом уроке.
7. Контроллеры. Контроллеры – это связующее звено между моделью и шаблонами (представлением). Как их создавать и как ими правильно пользоваться, мы разберём в этом уроке.
8. Шаблоны. Шаблоны – это место, где и содержится весь HTML-код сайта. В рамках этого урока Вы узнаете, как вообще передаются данные в шаблоны и как с ними правильно работать.
9. Компоновщики шаблонов. Данный механизм позволяет избежать дублирования при использовании одних и тех же шаблонов в разных контроллерах/функциях.
10. Шаблоны Blade. Мощнейший инструмент, предоставленный разработчиками Laravel, который позволяет внедрять логику прямо в HTML-код.
11. Наследование шаблонов. Данный механизм позволяет не дублировать один и тот же HTML-код в разных шаблонах (например, блок head, верхнее меню сайта, нижнее – одинаковы и имеются на всех страницах, поэтому неправильно будет каждый раз его копировать и вставлять в шаблоны).
12. Создание собственных директив. Если вдруг Вам будет не хватать директив, которые уже встроены в Blade, то всегда можно будет создать собственные. Как именно? Узнаете в этом уроке.
13. Компоненты. Относительно новый инструмент в Laravel, который позволяет создавать отдельные блоки HTML-кода, называемые компонентами, которые можно многократно использовать в разных местах разных шаблонов. Например, есть какая-нибудь красивая кнопка, и хочется, чтобы её код был в одном месте и не дублировался многократно в различных формах. Тут-то и помогут компоненты.
14. Слоты. Слоты позволяют добавлять контент к существующим компонентам.
15. Макеты. Благодаря слотам появляется возможность создавать и макеты сайтов, что крайне удобно при их разработке.
16. Объект Request. Важнейший объект Laravel, с которым приходится работать постоянно. Самый простой пример его использования – это работа с формами. Но, безусловно, только ими данный объект не ограничивается, и об этом мы поговорим в этом уроке.
17. Объект Response. Данный объект позволяет настраивать ответ сервера. Например, благодаря этому Вы можете начать процедуру скачивания файла клиентом или записать ему cookie.
18. Работа с URL. С URL приходится взаимодействовать в Laravel очень часто и, как именно это делается, Вы узнаете в этом видео.
19. Сессии. Сессии — это важнейший механизм, позволяющий хранить информацию о конкретном пользователе и считывать эту информацию при любом его запросе.
20. Обработка исключений. В Laravel уже из коробки обрабатывается огромное количество исключений. Однако, никто не мешает Вам добавлять свои, о чём мы и поговорим в этом уроке.
21. Пользовательские страницы ошибок. По умолчанию в Laravel уже имеются страницы ошибок (404, 403 и так далее). Но в этом уроке Вы научитесь создавать свои собственные страницы для этих ошибок, что очень важно для любого серьёзного сайта.
22. Логирование. Свои проекты я (а точнее мой скрипт) ежедневно мониторю на наличие каких-либо ошибок в логах. И если они появляются, то иду и оперативно их исправляю. Но ошибки – это не всегда неинициализированная переменная или забытые кавычки. Это очень часто просто «сомнительные» вещи, о которых стоит записывать в лог-файл и впоследствии анализировать, как такое могло случиться. И о том, как делать логирование, Вы узнаете в этом уроке.
Раздел №3. Работа с базой данных
1. Подготовительный этап. Прежде чем работать с базой данных, нужно произвести важные настройки, чем мы и займёмся в этом уроке.
2. Миграции. Важнейший механизм, в котором описываются все таблицы для базы данных, которые потом благодаря Artisan автоматически создаются уже в СУБД. Всё это подробно обсуждается в этом видео.
3. Использование Seeder. Seeder позволяют наполнить таблицы базы данных тестовым контентом. Необычайно удобный механизм, до знакомства с которым, наполнение тестовыми данными всегда была очень неприятная рутина. А благодаря наполнителям всё прописывается и настраивается лишь один раз, а запускается и обновляется всё одной командой.
4. Отправка запросов через фасад DB. В этом уроке Вы научитесь отправлять запросы и взаимодействовать с базой данных через Laravel.
5. Построение запросов. Здесь мы разберём более удобный вариант взаимодействия с базой данных, которого достаточно в 99% случаях.
6. Навигация по страницам. Любой, кто делал навигацию по страницам, знает, какая это непростая задача со множеством подводных камней. В Laravel же всё это максимально упрощено, и как реализуется навигация по страницам, Вы узнаете в этом видео.
Раздел №4. Модель
1. Создание модели. Модель в Laravel – это реализованный паттерн Active Record (подробно этот паттерн разбирается в книге «Шаблоны корпоративных приложений» Мартина Фаулера). А благодаря уже реализованном ORM (Object-Relational Mapping) работать с такими моделями – одно удовольствие.
2. Фабрика. Очень полезный инструмент для Seeder, а также, в целом, при создании новых объектов, которые в будущем попадут уже в конкретную таблицу в виде новой записи.
3. Работа с моделями. Как получить те или иные записи из базы данных, как считать их поля, как их обновить, как удалить, как добавить новые – всё это разбирается в этом важнейшем уроке.
4. Аксессоры и мутаторы. Полезный механизм, который позволяет «перехватить» получение и изменение свойства модели.
5. Наблюдатели. Полезный тип объектов, которые «перехватывают» различные взаимодействия с моделями (добавление, получение, изменение и удаление).
6. Отношение один к одному. Наиболее популярный тип отношений между моделями, который мы разберём в этом уроке.
7. Отношение один ко многим. Ещё один тип отношений, который встречается так же очень часто.
8. Отношение многие ко многим. Не такой частый тип отношений, но достаточно сложный и хоть изредка, но встречающийся. В этом уроке мы его детально разберём.
9. Ресурсный контроллер. В этом видео мы сгенерируем специальный контроллер, который будет служить для взаимодействия с конкретной моделью.
Раздел №5. Обработка форм
1. Вывод форм. В этом уроке Вы узнаете, как выводить формы в шаблонах.
2. Валидация. В Laravel есть очень удобный механизм валидации форм, с которым Вы научитесь работать после просмотра данного урока.
3. Класс запроса формы. Для сложных форм бывает более удобно создать отдельный класс для её проверки.
4. Создание собственного правила валидации. В Laravel очень много встроенных правил валидации, однако, никто не мешает создать какое-нибудь своё особое правило, чем мы и займёмся в рамках этого урока.
5. Взаимодействие с моделями через формы. В этом уроке применим знания из предыдущих и научимся управлять моделями через формы.
6. Взаимодействие с файлами и их загрузка. В этом видео Вы узнаете, как работать с файлами через Laravel, а также как делать загрузку файлов пользователями.
Раздел №6. Регистрация и авторизация пользователей
1. Установка Laravel Breeze. Данный пакет уже содержит в себе все необходимые инструменты по работе с пользователями. И даже если Вы захотите всё сделать самостоятельно, всё равно данный пакет будет очень хорошей отправной точкой.
2. Регистрация пользователей. В этом уроке Вы научитесь делать регистрацию пользователей.
3. Подтверждение e-mail. На большинстве сайтов с регистрацией требуется подтверждение e-mail, и как реализовать подобный механизм в Laravel, Вы и узнаете в этом уроке.
4. Авторизация пользователей. В этом видео Вы научитесь делать вход пользователей на сайт.
5. Подтверждение пароля. Бывают особо важные операции на сайте (например, отправка платежей), для которых стоит запросить ещё раз пароль даже для авторизованного пользователя. Вот такой механизм мы и разберём.
6. Выход из системы. В этом уроке мы поговорим про выход из системы.
7. Восстановление пароля. Не самая приятная задача, но благодаря Laravel, всё будет достаточно просто.
8. Политики и права доступа. У разных пользователей, как правило, разные права. Например, один может удалять любой комментарий, другой только определённую группу комментариев, а третий может только свой и только в течение определённого времени. И в этом уроке мы обсудим, как настроить такой механизм благодаря мощнейшему инструменту Laravel – политики.
Раздел №7. Дополнительные возможности
1. Отправка e-mail. E-mail отправляются очень часто, поэтому, разумеется, нужно уметь это делать.
2. Отправка уведомлений. В Laravel много встроенных уведомлений (например, для подтверждения e-mail), но никто не мешает создавать и свои, чему Вы и научитесь после этого урока.
3. События. В Laravel можно создавать свои собственные события, на которые потом подписываются слушатели. И при возникновении первых, вторые могут отреагировать на это. Всё это мы подробно разберём в этом уроке.
4. Создание собственных команд для Artisan. Очень полезный инструмент для серьёзных проектов. Например, можно сделать команду, которая запустит генерацию каких-нибудь отчётов.
5. Планировщик задач. По сути, это альтернатива cron, однако, гораздо более удобная и в разы более мощная. А в cron записывается только одна единственная задача. Переоценить планировщик задач – невозможно. Например, ту же генерацию отчётов можно автоматически запускать ежедневно, кроме выходных и первых чисел января.
6. Локализация. В Laravel очень удобная система создания мультиязычного сайта, которую мы подробно обсудим в этом уроке.
7. Helpers. PHP-программисты зачастую сталкиваются с одними и теми же задачами, которые по умолчанию в PHP не реализованы (хотя в новых версиях PHP ситуация заметно улучшилась). Например, генерация случайной строки или получение случайного элемента в массиве. Вот эту проблему и решают Helpers.
8. Заключение. Важные слова напутствия и информация о том, в каком направлении и как стоит двигаться дальше.
Упражнения:
По моему мнению, невозможно обучаться программированию без практики. В данном курсе Вы будете всё понимать, но, чтобы научиться самому создавать сайты на Laravel, а не просто понимать, что происходит, нужно обязательно выполнять задания. И почти к каждому уроку курса идёт по несколько упражнений для закрепления материала из урока. Более того, в рамках этих упражнений Вы создадите свой собственный сайт, который Вы сможете показывать, как своё портфолио при том же трудоустройстве.
Бонус. Создание сайта на Laravel
В рамках основного курса Вы получите всю необходимую теорию, однако, я по себе знаю, что после теории безумно помогает в обучении практический пример, так как он упорядочивает весь огромный объём знаний, полученных в рамках основного курса.
И вот как раз такой пример Вы и получите в этом Бонусе. Он состоит из 20 уроков, в которых Вы увидите создание полноценного сайта на Laravel. Вы увидите создание и настройку проекта, создание моделей, фабрик и наполнителей, подготовку макетов, вывод нескольких различных страниц сайта, обработку нескольких форм, создание системы комментирования (вместе с механизмом удаления), добавление reCAPTCHA, поиска и, наконец, создание ЧПУ-ссылок.
- Вы уже будете знать, что из себя представляет Laravel, как он работает, а в конце у Вас будет уже всё готово для создания своих первых Web-приложений.
- У Вас уже будет вся база для создания проектов на Laravel, и Вы уже сможете создавать простые Web-сайты.
- Вы научитесь работать с базой данных и сможете уже создавать более серьёзные сайты.
- Вы уже сможете начать создавать серьёзный проект, так как именно с модели обычно и начинается программирование сайта.
- Вы сможете создавать, в целом, практически любые сайты, но пока без регистрации и авторизации пользователей.
- Вы сможете создавать не только регистрацию и авторизацию пользователей, но и делать любой функционал для авторизованных пользователей.
- Вы уже сможете создать абсолютно любой сайт, так как все необходимые знания уже будут у Вас.