Думай, перш ніж стрибати.

Розумний підхід до початку роботи з Laravel

pic

Трохи історії …

Я родом з маленького села поблизу схилів гори Абердар. Виростаючи там, головною метою було потрапити до університету. Пройшли роки, я опинився в університеті, вивчаючи прикладну інформатику, і мене вразило, що я можу створити вебсторінку і показати її друзям та родині (і стати гіком 😉). Усе це завдяки індійському ютуберу 😂😂

Все було добре кілька років після закінчення навчання, я створював прості односторінкові чи багатосторінкові вебсайти та веб-додатки, поки не почав працювати з професіоналами високого рівня. Вони дали мені книгу та посилання на документацію зі стандартами галузі, щоб я знову почав вчитися з нуля. Це сильно вразило мене (Вибач, шкільна програма, але ти значно відстаєш від галузевих стандартів).

Досить історії, повертаємось до класу …

Я був комфортно почуваючись як веб-розробник. Оскільки PHP займає лідерські позиції серед мов програмування для бекенду, я вирішив зробити його своїм другом. Коли справа доходить до програмування, немає потреби винаходити колесо, особливо коли це колесо відповідає галузевим стандартам. Після ретельного пошуку в Інтернеті я вибрав Laravel Framework як своє колесо.

Я почав вивчати цей фреймворк, звісно, з допомогою того індійського друга з YouTube 😂 і кількох статей з Інтернету. Через 3–4 місяці я почав помічати, що відхиляюсь від своєї мети. Мій код значно відрізнявся від тих скриптів, що я бачив у репозиторіях GitHub.

Знайти свій шлях …

Я проводив вечори та вихідні наступні кілька місяців, вивчаючи мистецтво написання кращого коду на Laravel. Деякі терміни, такі як KISS, DRY, SOLID, YAGNI, SoC, APO та інші, набули нового значення (Обіцяю, я можу подарувати вам SOLID DRY KISS прямо зараз 😂🤭). Через вісім місяців я зрозумів, що почав більше спиратись на документацію, ніж на статті в Інтернеті, і той індійський ютубер вже не був моїм другом (вибач, старий приятелю).

Протягом цього шляху я дізнався кілька важливих уроків.

Вивчайте екосистему Laravel першою

Знайдіть добре написану книгу про Laravel і читайте її як роман. Це відкриє вам багато концепцій, які вам доведеться глибше вивчити, коли ви почнете працювати з фреймворком. Думайте про це як про читання карти перед початком подорожі. Це підготує вас до процесу навчання, щоб ви не пропустили важливі моменти.

Вивчайте основні концепції Laravel

Після того як ви ознайомились з картою подорожі, починайте вивчати кожну концепцію Laravel. Для кожної концепції створюйте п’ять різних варіантів використання. Це допоможе вам краще зрозуміти концепцію.
Створення варіанту використання для кожної концепції також допоможе вам дотримуватись принципу єдиної відповідальності, який є частиною принципу SOLID. Принцип SOLID складається з п’яти принципів: єдина відповідальність, відкритість для розширення, заміщення Ліскова, розподіл інтерфейсів та інверсія залежностей.

Дотримуйтесь структури MVC

Після вивчення кожної концепції настав час об’єднати все разом, щоб створити працюючий додаток.

Переконайтесь, що:

  • Використовуєте Моделі для простої бізнес-логіки.
  • Використовуєте Сервісні класи для складної логіки.
  • Для більших проектів використовуєте Патерни репозиторіїв, щоб легше було змінювати джерела даних без впливу на інші шари.
  • Тримайте контролери мінімальними, делегуючи важку роботу Сервісам.
  • Використовуєте View Composers для підготовки даних для конкретних представлень, щоб зробити контролери ще більш мінімальними.
  • Уникайте розміщення логіки в View; резервуйте їх для відображення даних.
  • Використовуйте Form Requests для валідації даних. Це переміщає логіку валідації запитів з контролерів у спеціалізовані класи.
  • Використовуйте Політики та Гейти для Авторизації.

Дотримуйтесь принципу SOLID, використовуючи ін'єкцію залежностей

  • Принцип єдиної відповідальності (SRP): Клас повинен мати лише одну причину для зміни.

    Основні принципи Laravel

  • Принцип єдиної відповідальності (SRP): Кожен клас повинен мати одну чітко визначену відповідальність.

  • Принцип відкритості/закритості (OCP): Класи повинні бути відкритими для розширення, але закритими для модифікації. Розширюйте функціональність без зміни існуючого коду.

  • Принцип підстановки Ліскова (LSP): Переконайтесь, що похідні класи або реалізації можуть заміняти базові класи або інтерфейси без порушення роботи програми.

  • Принцип розподілу інтерфейсів (ISP): Клас не повинен бути змушений реалізовувати інтерфейси, які він не використовує. Створюйте маленькі, специфічні інтерфейси замість великих, загальних.

  • Принцип інверсії залежностей (DIP): Високорівневі модулі не повинні залежати від низькорівневих. Обидва повинні залежати від абстракцій. Залежність повинна бути від інтерфейсів (абстракцій), а не від конкретних класів.

Вчіться оптимізувати для масштабованості та продуктивності

Оскільки Laravel підтримує горизонтальне та вертикальне масштабування, будьте готові використовувати Черги (Queues) та Трансляцію подій (Event Broadcasting) для асинхронної обробки таких завдань, як сповіщення електронною поштою, обробка завдань та трансляція оновлень. Також розробляйте структуру вашої бази даних, враховуючи майбутнє зростання.

Прийміть культуру тестування

Тестування займає близько 25% – 40% всього часу на розробку, але воно рятує від багатьох багів в продуктивному середовищі. Пишіть код із розрахунком на тестування. Вчіться тестуванню за допомогою PHP's PHPUnit та PEST. Спочатку робіть юніт-тести, а потім тести функціоналу, намагаючись імітувати дії користувача.

Серйозно ставтесь до безпеки

  • Завжди валідуйте та очищайте введення користувача, щоб запобігти вразливостям, таким як SQL-ін'єкції та міжсайтові скрипти (XSS).
  • Зберігайте чутливу інформацію, таку як API-ключі та облікові дані для бази даних, безпечно в файлах .env і переконайтесь, що вони не потрапляють в публічний доступ.
  • Регулярно оновлюйте Laravel та його залежності, щоб виправити відомі вразливості.
  • Використовуйте вбудовані функції автентифікації Laravel, забезпечуйте надійні політики паролів та розгляньте можливість багатофакторної автентифікації (MFA) для підвищеної безпеки.

Використовуйте інструменти для деплою

Використовуйте інструменти, такі як Laravel Forge, Envoyer або CI/CD пайплайни для автоматизації процесів деплою, щоб зменшити ймовірність помилок і заощадити час. Завжди зберігайте чутливі конфігурації, такі як API-ключі та облікові дані бази даних, у файлах .env і переконайтесь, що ці файли виключені з системи контролю версій, щоб запобігти несанкціонованому доступу.

Будьте в курсі останніх новин

На відміну від багатьох інших сфер, програмування постійно розвивається, і Laravel не є винятком. Тримайтеся в курсі новин, читаючи щотижневі оновлення про фреймворк, щоб знати про майбутні функції та ті, які будуть застарілими. Регулярно оновлюйте свої додатки до нових версій, здебільшого з міркувань безпеки та зручності в обслуговуванні.

Тепер цей сільський розробник готовий повернутись до темного VSCode і написати ще трохи коду. Сподіваюся, ви дізналися щось нове, і якщо так, не забудьте поставити лайк, прокоментувати та підписатися.

Перекладено з: Think Before You Leap:

Leave a Reply

Your email address will not be published. Required fields are marked *