Крок 2: Знайомство з проектом

5.2 version
Maintained

Знайомство з проектом

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

Розкриття проекту

Оскільки книга має бути випущена під час SymfonyCon Amsterdam, було б непогано, якби проект був якось пов’язаний із Symfony й конференціями. А як щодо гостьової книги? A livre d’or, як ми говоримо по-французьки. Мені подобається старомодне й застаріле відчуття розробки гостьової книги у 2019 році!

Отже, є. Суть проекту полягає в отриманні відгуків про конференції: список конференцій на головній сторінці, сторінка для кожної конференції, повна приємних коментарів. Коментар складається з невеликого тексту та додаткової фотографії, зробленої під час конференції. Я думаю, що я тільки що записав всі специфікації, які нам потрібні, щоб почати роботу.

Наш проект буде містити декілька застосунків. Це буде традиційний веб-сайт з HTML на фронт-енді, API, та SPA для мобільних пристроїв. Як вам це?

Практичне навчання

Практика — найкращий вчитель. Крапка. Читання книги про Symfony це, звичайно, круто. Але розробка свого власного застосунку, паралельно з читанням — набагато краще. Ця книга дуже особлива, тому що було зроблено все можливе для того, щоб ви могли, писати код та бути впевненими, що отримаєте ті ж результати, які отримав я на своїй локальній машині, писавши код вперше.

Книга містить весь код, який вам потрібно написати, і всі команди, які ви маєте виконати, щоб отримати кінцевий результат. Нічого з кодової бази не опускалося. Перелічено абсолютно всі команди. Все це можливо завдяки тому, що сучасні застосунки з Symfony мають дуже мало шаблонного коду. Більша частина коду, яку ми напишемо разом, буде присвячена бізнес-логіці проекту. Все інше в основному автоматизовано або генерується автоматично для нас.

Підсумкова діаграма структури проекту

Навіть якщо ідея проекту здається простою, ми не збираємося будувати проект, подібний «Hello World». Ми будемо використовувати не тільки PHP і базу даних.

Мета полягає в тому, щоб створити проект з деякими складнощами, які ви можете зустріти в реальному житті. Хочете докази? Погляньте на кінцеву інфраструктуру проекту:

../_images/infrastructure.svg

Однією з найбільших переваг використання фреймворку є невелика кількість коду, необхідного для розробки такого проекту:

  • 20 PHP-класів у каталозі src/ для веб-сайту;
  • 550 логічних рядків PHP-коду (LLOC), як звітує PHPLOC;
  • 40 рядків налаштувань конфігурації у 3-х файлах (з використанням анотацій та YAML), в основному для налаштування backend’у;
  • 20 рядків конфігурації інфраструктури розробки (Docker);
  • 100 рядків конфігурації для продакшн-інфраструктури (SymfonyCloud);
  • 5 явних змінних середовища.

Готові до виклику?

Отримання вихідного коду проекту

В продовження теми старомодності, я міг би створити компакт-диск з вихідним кодом, чи не так? Але як ви ставитеся до компаньйона — Git-репозиторія, натомість?

Клонуйте репозиторій гостьової книги на ваш локальний комп’ютер:

1
$ symfony new --version=5.2-1 --book guestbook

У цьому репозиторії міститься весь код, який зустрічається у цій книзі.

Зверніть увагу, що ми використовуємо команду symfony new замість git clone, тому, що ця команда робить більше, ніж просто клонує репозиторій (розміщений на Github під організацією the-fast-track https://github.com/the-fast-track/book-5.2-1). Команда також запускає веб-сервер, контейнери, проводить міграцію бази даних, запускає фікстури, та інше… Після виконання команди веб-сайт повинен бути запущений і готовий до використання.

Код на 100% сходиться з тим, який міститься у книзі (використовуйте точну URL-адресу сховища, що зазначена вище). Вкрай складно вручну підтримувати один і той же код одночасно і в книзі, і в сховищі. Я намагався, в минулому. Я зазнав невдачі. Це просто неможливо. Особливо для книг, таких як пишу я: книг, які розповідають вам історію про розробку веб-сайту. Оскільки кожна глава залежить від попередніх, будь-яка зміна може мати наслідки у всіх наступних розділах.

Гарна новина полягає в тому, що Git-репозиторій для цієї книги згенеровано автоматично, з вмісту книги. Ви все правильно прочитали. Мені подобається автоматизувати все, тому є сценарій, завдання якого — прочитати книгу й створити Git-репозиторій. Є чудовий побічний ефект: при оновленні книги, якщо внесені зміни суперечать поточним, або я забуду оновити певні інструкції — сценарій видасть помилку. Ось це — BDD, Book Driven Development!


  • « Previous Крок 1: Перевірка робочого середовища
  • Next » Крок 3: Перехід від нуля до продакшн

This work, including the code samples, is licensed under a Creative Commons BY-NC-SA 4.0 license.