Плануєте створити вебдодаток, але шукаєте інструмент, який дозволить працювати швидко, структуровано та без зайвої рутини? Зверніть увагу на Laravel.
Laravel – це популярний PHP-фреймворк для розробки вебзастосунків, який забезпечує зручну архітектуру, модульність та інструменти для ефективної роботи з кодом.
У цій статті ми розглянемо, чому Laravel став стандартом у PHP-розробці та як його можливості допомагають прискорити створення сучасних вебпроєктів.
Що таке Laravel
Laravel – це безкоштовний фреймворк для швидкої розробки веб-додатків на PHP. Це означає, що всі інструменти вже під капотом і нічого не потрібно вигадувати самому – просто брати і робити. Ось що в Laravel доступно «з коробки»:
- Інтерактивна документація. Для кожної функції є окрема стаття з прикладами. Дуже зручно як для початківців, так і для досвідчених розробників.
- Міграції баз даних. Laravel надає зручний спосіб для роботи з базами даних за допомогою міграцій. Міграції дають змогу змінювати структуру бази даних без необхідності писати SQL-запити.
- Artisan. Консоль для розробників, яка спрощує взаємодію з Laravel, дає змогу проводити міграції баз даних, налаштовувати авторизацію і взаємодіяти з компонентами фреймворка.
- ORM (object-relational mapping). Eloquent ORM дає змогу працювати з базами даних в об’єктно-орієнтованому стилі, тобто вибудовувати взаємодію з повноцінними об’єктами, якими можна маніпулювати.
- Шаблони. У Laravel купа шаблонів для створення користувацького інтерфейсу. Це значно спрощує процес розробки.
- Реєстрація та авторизація. Фреймворк надає готові шаблони для аутентифікації користувачів, щоб розробникам не доводилося винаходити колесо.
- Зручний дебаггінг і тестування додатків. Зазвичай у веб-розробці не дуже зручно реалізована перевірка коду на надійність, тому творці Laravel вирішили спростити цей процес.
На цьому список можливостей Laravel не закінчується. Ще є більш специфічні штуки: кешування, маршрутизація, MVC і багато інших корисних фіч. Але головне, що варто знати про Laravel, – на ньому можна швидко і зручно створювати сайти.
Переваги над іншими PHP-фреймворками
У PHP-світі постійно триває боротьба між чотирма популярними фреймворками: Laravel, Symfony, Yii і CodeIgniter. Кожен із них гарний, але, природно, у кожного є свої особливості.
Якщо порівнювати Laravel з іншими популярними фреймворками, то відмінності такі:
- Менша складність. Laravel простіше вивчити і використовувати, ніж, наприклад, Symfony. Однак така простота ніяк не обмежує його функціональність.
- Зручна маршрутизація. Laravel пропонує зручну маршрутизацію, наприклад, дозволяючи групувати, кешувати та давати власні назви маршрутам, а також визначати дії на різні HTTP-запити.
- Інтеграція з бібліотеками. Laravel використовує пакетний менеджер Composer, який дає змогу швидко під’єднувати сторонні бібліотеки до проєкту без зайвих проблем.
- Сучасна архітектура. У Laravel вбудована сучасна архітектура, включно з шаблоном MVC (Model-View-Controller).
Загалом Laravel дотримується чудового балансу між функціональністю, гнучкістю і простотою у використанні. Щоправда, і в нього є свої особливості та межі застосування. Тому його не можна назвати «найкращим PHP-фреймворком». Однак творці Laravel намагалися зробити все, щоб він був комфортним для розробки:
“Laravel призначений, щоб прибрати біль у розробці шляхом спрощення звичних завдань, що часто трапляються у веб-проєктах… Laravel потрібен, щоб зробити процес розробки приємним для програмістів без погіршення функціональності застосунків. Як то кажуть, щасливі розробники пишуть найкращий код”.
Що можна робити на Laravel
Раз Laravel – це популярний фреймворк для розробки веб-додатків, то на ньому пишуть різні веб-додатки (спасибі за очевидність):
- Лендінги, або посадочні сторінки. На Laravel можна з мінімальними витратами написати як просту сторінку, так і мультисторінковий сайт для компанії. Звичайно, це буде складніше, ніж використовувати конструктори по типу Wix, але при цьому можна масштабувати сайт і додавати будь-які власні фічі. Приклад: лендинг Canva.
- API. Це прошарок для обміну даними між клієнтською і серверною сторонами веб-додатку. Приклад: Laravel Passport, API для безпечної авторизації користувачів у веб-додатку.
- CMS. Системи управління контентом (content management system, або CMS) – вони потрібні, щоб керувати вмістом веб-сайту. Приклад: October CMS.
- Онлайн-магазини. На Laravel також створюють електронні комерційні платформи, на яких можна продавати товари та послуги. Приклад: Bagisto.
Ось ще кілька великих проєктів, які написані на Laravel:
- laravel.com – офіційний сайт Laravel, створений на Laravel;
- Neighbourly – соціальна мережа для спілкування з сусідами;
- World Walking – застосунок для мотивації людей ходити більше;
- Ko-fi – платформа для підтримки творчості;
- The Invoice Machine – онлайн-сервіс для виставлення рахунків;
- Startups.com – платформа для запуску й розвитку стартапів;
- Larametrics – це інструмент для моніторингу й аналізу продуктивності застосунків на Laravel.
Це лише частина сайтів, написаних на Laravel. Деякі платформи можуть використовувати фреймворк як один із компонентів складного веб-додатка, але зазвичай про це не говорять – особливо часто відмовчуються великі компанії.
З чого почати роботу
Щоб освоїти фреймворк, теорії завжди мало, обов’язково потрібна практика. Тому далі ми займемося саме цим – напишемо простий застосунок, щоб грати з комп’ютером у гру «Камінь, ножиці, папір». Але для початку нам треба буде встановити Laravel і MySQL.
Якщо у вас ще не встановлено PHP, можете прочитати, як це зробити, в нашій статті.
Завантажуємо Composer
Composer – це пакетний менеджер для PHP. За допомогою нього можна встановлювати сторонні бібліотеки та фреймворки, як це потрібно в нашому випадку. Розглянемо встановлення для операційних систем Windows, macOS і Linux.
Windows. На цій ОС процес встановлення найпростіший:
- переходимо на офіційний сайт Composer і завантажуємо інсталяційний файл Composer-Setup.exe;
- запускаємо його і проходимо звичні кроки встановлення.
macOS. Встановити Composer безпосередньо не вийде, спочатку потрібно завантажити менеджер пакетів Homebrew – про нього ми розповідали в статті про PHP.
Після встановлення Homebrew вводимо команду.
Linux. Тут встановити Composer простіше, ніж на macOS. Для різних Linux-систем команди можуть відрізнятися (через особливості системи управління пакетами), але сам процес встановлення, по суті, буде ідентичним. Ось як виглядає процес встановлення в Debian-подібних дистрибутивах.
Якщо виникли труднощі зі встановленням, можна звернутися до документації на офіційному сайті. А якщо все вийшло – переходимо далі.
Завантажуємо MySQL
Ми зберігатимемо статистику ігор у базі даних, а для неї потрібен власний сервер. Тому завантажуємо MySQL з офіційного сайту.
Далі треба вибрати операційну систему і пройти стандартний процес встановлення. Зверніть увагу: на етапі конфігурування обов’язково запам’ятайте введений пароль, тому що з його допомогою ви будете підключатися до бази даних.
Залиште галочку, де кажуть, що MySQL Server запуститься відразу після встановлення. І тепер усе готово.
Альтернативне встановлення для Linux. Якщо ви використовуєте Linux, то завантажувати інсталятор не обов’язково – можна знову-таки скористатися пакетним менеджером. Робиться це приблизно так (з поправкою на ваш дистрибутив).
Після встановлення потрібно запустити сам сервер.
Готово – сервер запущено!
Встановлюємо Laravel
Тепер нам необхідно встановити Laravel. Це можна зробити через Composer, який автоматично вміє завантажувати Laravel і всі залежності.
Відкрийте командний рядок і введіть таку команду.
Тут myapp – це ім’я вашого проєкту. Ця команда створить новий проект Laravel у папці myapp.
Ми встановили Laravel останньої версії, 10.0.4. На скріншоті вище показано успішний процес встановлення. Якщо виникли проблеми – дивіться документацію зі встановлення на офіційному сайті.
Запускаємо сервер
Щоб перевірити правильність встановлення Laravel, нам достатньо лише запустити вбудований веб-сервер. До речі, не рекомендуємо використовувати вбудований веб-сервер у продакшені – для реального проєкту краще вибрати Apache або Nginx.
Запустити веб-сервер просто: переходимо в папку з проектом і відкриваємо командний рядок.
Відкриваємо браузер і переходимо за вказаною адресою: http://127.0.0.1:8000/. Якщо все добре, має відкритися приблизно такий екран:
Це сторінка Laravel за замовчуванням. Її, звісно ж, можна змінювати – цим ми й займатимемося далі. Ну а поки що буде корисно перейти за посиланнями – почитати документацію та свіжі новини про фреймворк.
Веб-додаток на Laravel
Тепер, коли в нас установлено Laravel, можна братися до написання коду. Як уже згадувалося вище, ми створимо гру «Камінь, ножиці, папір» і будемо грати в неї з комп’ютером.
План такий:
- Створити новий проект і вибрати назву.
- Організувати базу даних, щоб зберігати статистику ігор.
- Зробити міграцію бази даних, щоб усі таблиці були на своєму місці.
- Додати маршрут і розібратися, що це таке.
- Створити контролер і теж зрозуміти, навіщо він потрібен.
- Створити кнопки для гри.
- Прикрасити все за допомогою CSS-стилів.
План здоровський – приступимо!
Створюємо новий проект
Йдемо вже знайомим шляхом: запускаємо командний рядок і вводимо команду для Composer.
Проект створили – файли не змінилися.
Залиште командний рядок відкритим – він нам ще стане в пригоді, а самі перейдіть у папку з проєктом за допомогою такої команди.
Команда cd дає змогу рухатися вгору і вниз по папках. Ну а раз ми вже в потрібному місці, переходимо далі.
Організуємо базу даних
Щоб зберігати результати ігор, нам потрібна база даних. Вона являє собою звичайний файл, у якому дані зберігаються в зручному для використання вигляді.
Перейдемо до файлу .env, який міститься в папці нашого проєкту. Він може бути прихований, тому що його назва починається з крапки. Якщо він у вас не відображається, змініть налаштування відображення файлів у своїй системі.
У файлі нам потрібно поправити наступні рядки.
Нам потрібні останні три опції.
У першому рядку ми задаємо назву бази даних, а в другому і третьому – дані для входу в неї. Зараз ми зробимо їх простими, але пам’ятайте, що, якщо ви збираєтеся викладати сайт в інтернет, дуже важливо, щоб пароль і логін були надійними.
Зберігаємо файл і закриваємо його – база даних попередньо налаштована.
Робимо міграцію
Ми створили базу даних, настав час створити потрібні таблиці. Відкриваємо командний рядок і переконуємося, що перебуваємо в папці з проєктом. Вводимо таку команду.
Ця команда зробить міграцію бази даних, тобто змінить її вміст і створить файл із таблицею. У нашому випадку – додасть таблицю game_statistics, а також файл із датою створення таблиці та припискою _create_game_statistics_table.
З’явився PHP-файл міграції, який знаходиться в папці database/migrations.
Відкриваємо його і додаємо наступний код – він допоможе задати структуру нашої таблиці.
Ця міграція створить таблиці з шістьма стовпчиками: унікальним ідентифікатором гри (id), ім’ям гравця (player_name), ходом комп’ютера (computer_choice), ходом гравця (player_choice), результатом гри (result) і часовою відміткою (timestamps) – зазначенням часу, коли проходила гра.
Зверніть увагу на типи даних у нашій таблиці. У нас є чотири колонки з типом «рядок» (player_name, computer_choice, player_choice і result), а також два унікальних типи даних: id і timestamps. Перший – це айдішник рядка в таблиці, і він являє собою звичайне число, але з додатковими фічами. А другий являє собою дату у форматі YYYY-MM-DD HH:MM:SS.
Зберігаємо файл і закриваємо його. Тепер нам потрібно запустити міграцію – термінал нам допоможе.
У нас запитають, чи хочемо ми створити нову таблицю в базі даних. Погоджуємося.
Готово – тепер у нас є працююча база даних із потрібною таблицею.
Додаємо маршрут
Весь бекенд будується на маршрутах – або URL-адресах. Вони допомагають задавати зручну структуру і зрозумілу поведінку веб-додатків.
Для користувача маршрути – це окремі «вкладки» на сайті. Наприклад, якщо зайти на сайт, відкриється його головна сторінка. А якщо клікнути на будь-який курс, ми перейдемо на іншу сторінку сайту з іншою URL-адресою.
Ми побачимо, що до адреси нашого сайту додався текст: /course/profession-python/. Ця «приписка» і перенесла нас на іншу сторінку з іншим вмістом. Але не просто перенесла, а запустила певний код, який і намалював цю сторінку.
Нам знадобляться два маршрути: кореневий / та ігровий /play. Щоб їх додати, потрібно перейти в папку routes, відкрити файл web.php і вписати туди такий код.
На кореневому маршруті ми відображатимемо статистику і пропонуватимемо користувачеві зіграти в гру, а на ігровому маршруті будемо власне грати.
Цей код працюватиме так: якщо ми заходимо за кореневим маршрутом /, то PHP відмалює сторінку game.index, а якщо зайдемо за ігровим маршрутом /play, то він створить сторінку game.play. Поведінку цих сторінок ми опишемо далі.
На початку потрібно прописати ще один рядок.
Готово! Не забуваємо зберегти файл.
Створюємо контролер
Контролер – це поняття з шаблону проектування MVC.
Щоб не вдаватися в подробиці, скажемо, що контролер – це частина застосунку, яка відповідає за опрацювання запитів від користувача та взаємодію з моделлю (даними) і поданням (відображенням).
Простими словами, контролер – це сполучна ланка між користувацьким інтерфейсом і базою даних. Коли користувач відправляє запит на сервер, контролер отримує цей запит, обробляє його і взаємодіє з базою даних, щоб отримати необхідні дані. Потім контролер передає ці дані в подання, яке відображає їх на екрані для користувача.
Контролер відокремлює бізнес-логіку застосунку від призначеного для користувача інтерфейсу, що дає змогу більш ефективно керувати застосунком і забезпечує більш гнучку архітектуру. Він також дає можливість програмістам працювати з додатком окремо, без необхідності знати про інші компоненти програми.
Нам потрібно створити контролер для всієї гри. Називатися він буде GameController. Щоб створити його, потрібно запустити в терміналі таку команду.
Ця команда створить новий файл із контролером у папці app/Http/Controllers. Перейдемо туди, відкриємо файл GameController.php і впишемо такий код.
Цей код визначає метод index(), який повертатиме ігрове подання, щоб відображати елементи на сайті. Ми опишемо його на наступному кроці.
А поки додамо в цей же файл ще одну функцію – play().
Тут ми прописали основну логіку гри. На вхід функція приймає об’єкт Request, який містить хід гравця. Примірник цього об’єкта буде приходити, коли ми натиснемо на одну з кнопок у грі («Камінь», “Ножиці” або «Папір»), а потім відправимо наш вибір методом POST.
Детальніше про HTTP-запити ви можете прочитати в нашій статті про протокол HTTP.
Після того як ми обробили запит, нам потрібно згенерувати відповідь комп’ютера – за допомогою генератора випадкових чисел. І наприкінці ми визначаємо переможця і записуємо результат у базу даних методом insert().
Логіка гри готова! Знову ж таки, не забуваємо зберегти файл.
Створюємо кнопки для гри
Метод index() з файлу GameController.php відображає сторінку з грою, але поки що на ній нічого немає, тому давайте створимо пару кнопок.
Відкриваємо папку resources/views і створюємо там файл із назвою game.blade.php. Додаємо туди наступний код, щоб створити ігровий інтерфейс.
Не дивуйтеся, що ми вставили HTML-код у PHP-файл, – це нормально. PHP вміє працювати з HTML.
Але повернемося до коду: ми створили простий ігровий інтерфейс, який складається з трьох кнопок із вибором варіантів. Також ми додали кнопку, щоб відправляти дані в GameController і отримувати результат гри $result, якщо вона вже була зіграна.
Результат гри потрібен, щоб ми могли бачити, хто переміг у минулій грі. А щоб постійно не виводити цей текст, ми спершу перевіряємо, чи була змінна $result оголошена через GameController.
Тепер ми можемо запустити наш сервер і подивитися на результат. Бачимо те, що й хотіли побачити. Якщо натиснути на одну з кнопок, можна дізнатися, хто переміг. Але одразу проявляється одна проблема: ми не знаємо, які ходи зробив комп’ютер, а які – ми. Давайте це виправимо.
Заходимо назад у файл GameController.php і змінюємо всього один рядок. Тепер ми повертатимемо в наше подання додаткові змінні. Внесемо зміни і в файл game.blade.php.
Перезапускаємо сервер і бачимо, що тепер усе працює коректно.
Залишилося вивести результати останніх ігор, і наш застосунок буде готовий. Для простоти будемо враховувати статистику останніх десяти ігор. Для цього необхідно змінити файл GameController.php, а точніше функції index() і play().
Ми опустили кілька рядків, щоб показати лише найважливіші фрагменти.
Як бачите, у нас з’явилася нова змінна $last_games, в якій містяться 10 останніх рядків бази даних. Це робиться за допомогою двох методів: orderBy(), який використовується, щоб доставити тільки найсвіжіші ігри, і limit(10), який допомагає обмежити їх кількість десять.
У кожному представленні ми також додаємо цей список у якості повертаємого значення.
Тепер потрібно відправити файл game.blade.php і показати ці ігри. Цей код просто створює ненумерований список, який розміщується після форми. Всередині списку ми додаємо елементи <li> через цикл @foreach. В ньому ми проходимо по всіх наших іграх і виводимо для результатів кожної гри, ходу гравця і комп’ютера.
Збережемо файли і перезапустимо сервер. Ура! У нас виводяться результати завершених ігор, а нові ігри успішно зберігаються.
Прикрашаємо гру за допомогою CSS
Залишилося трохи прикрасити сайт за допомогою CSS, а потім насолодитися його красою. Відкриємо папку public і створимо файл styles.css. Додамо в нього наступний код.
Тут ми трохи причесали всі елементи сторінки, щоб вони відображалися трохи симпатичніше. Наприклад, у тезі body ми задали шрифт і колір фону, а для всіх параграфів p задали розмір шрифту, зробили його жирним і вирівняли текст по центру. Тепер збережемо CSS-файл і відкриємо файл game.blade.php, щоб підключити до нього нові стилі.
Не найкращий дизайн, але концепцію ви, сподіваюся, зрозуміли. Можете спробувати самостійно довести стилі до досконалості і відправити гру на якусь премію в галузі веб-дизайну.
Що запам’ятати
Ми дізналися, що Laravel – це потужний і досить простий фреймворк для створення веб-додатків. Освоїти його можна за кілька місяців, а почати писати на ньому – вже сьогодні.
Щоб краще зрозуміти Laravel, радимо написати власний застосунок або спробувати доопрацювати наш, наприклад:
- додати авторизацію;
- протестувати застосунок;
- вбудувати ORM.
Висновок
Laravel дозволяє легко працювати з базами даних, формувати маршрути, обробляти запити, створювати API та забезпечувати безпеку застосунку. У фреймворку вже вбудовано автентифікацію, черги, кешування, Blade-шаблонізатор та інші зручності.
Переваги використання Laravel – чиста структура коду, велика екосистема (Horizon, Nova, Jetstream), активна спільнота та регулярні оновлення. Це рішення ідеально підходить для стартапів, корпоративних проєктів і будь-яких вебсервісів, де важлива швидкість і надійність.








