Вступ

Дата оновллення перекладу 2022-11-01

Вступ

Symfony - це набір автономних, відділених та повʼязаних PHP-компонентів, які вирішують загальні проблеми веб-разробки.

Замість використання цих низькорівневних компонентів, ви можете використати готовий до використання комплексний веб-фреймворк Symfony, який засновується на цих компонентах... або ви можете створити ваш власний фреймворк. Цей посібник стосується останнього.

Чому ви хочете створити ваш власний фреймворк?

Чому б ви хотіли створити влласний фреймворк в першу чергу? Якщо ви подивитеся по сторонах, всі казатимусть вам, що не має сенсу повторно винаходити колесо, і що вам краще обрати існуючий фреймворк та забути про створення власного. У більшості випадків, вони будуть праві, але існує декілька вагомих причин для того, щоб почати створювати власний фреймворк:

  • Дізнатисе більше про низькорівневу архітектуру сучасних веб-фреймворків загалом, та про внутрішні частини комплексного фреймворку зокрема;
  • Створити фреймворк, підігнаний під ваші потреби (тільки спочатку переконайтеся, що ваші потреби дуже конкретні);
  • Експериментувати, створюючи фреймворки задля розваги (у підході навчитися-та- викинути);
  • Реорганізувати старий/існуючий додаток, який вимагає доброї дози сучасних кращих практик веб-розробки;
  • Довести світу, що ви дійсно можете самостійно створити фреймворк (...але з невеликими зусиллями).

Цей туторіал мʼяко проведе вас по створенню веб-фреймворку, крок за кроком. На кожному кроці у вас буде повністю робочий фреймворк, який ви можете використовувати в цьому вигляді, або в якості початку для власного. Він почнеться з простого фреймворку, але більше функцій буде додано з часом. Зрештою, у васс буде повністю функціональний комплексний веб-фреймворк.

І, авжеж, кожний крок буде приводом вивчити більше про деякі з компонентів Symfony.

Багато сучасних веб-фреймворків рекламують себе як MVC-фреймворки. Цей туторіал не буде говорити про MVC-схему, так як Компоненти Symfony можуть створити будь-який тип фреймворку. В будь-якому випадку, якщо ви подвитеся на семантику MVC, то ця книга про те, як створити частину Контролера у фреймворку. Для Моделі та Перегляду, все дійсно залежить від вашого смаку, і ви можете використати будь-які існуючи сторонні бібліотеки (Doctrine, Propel або старий добрий PDO для Моделі; PHP або Twig для Перегляду).

При створенні фреймворку, наступна MVC-схема не є правильною ціллю. Головною ціллю має бути Розділення функціональності; Це, скоріш за все, єдина схема дизайну, про яку вам варто потурбуватися. Фундаментальні принципи Компонентів Symfony сфокусовані на HTTP специфікації. Таким чином, фреймворк, який ви будете створювати, повинен бути точніше позначений як HTTP-фреймворк або фреймворк Запиту/Відповіді.

До того, як ви почнете

Читати про те, як створити фреймворк - недостатньо. Вам потрібно буде дотримуватись і дійсно друкувати всі включені у цей туторіал приклади. Для цього, вам знадобиться сучасна версія PHP (5.5.9 або пізніша підійде), веб-сервер (як Apache, NGinx або вбудований веб-сервер PHP), гарне знання PHP та розуміння Обʼєктно-орієнтованого програмування.

Готові? Продовжуйте читати!

Початкове завантаження

До того, як ви навіть зможете подумати про створення першого фреймворку, вам потрібно подумати про деякі угоди: де ви будете зберігати код, як ви будете називати класи, як ви будете посилатися на зовнішні залежності та ін.

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

1
2
$ mkdir framework
$ cd framework

Управління залежностями

Щоб встановити Компоненти Symfony, які вам потрібні для вашого фреймворку, ви будете використовувати Composer, менеджер залежностей проекту для PHP. Якщо у вас його ще немає, завантажте та встановіть Composer зараз.

Наш проект

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

1
2
3
4
// framework/index.php
$input = $_GET['name'];

printf('Hello %s', $input);

Ви можете використати вбудований PHP-сервер, щоб тестувати цей надзвичайний додаток у браузері (http://localhost:4321/index.php?name=Fabien):

1
$ symfony server:start

У наступній главі, ми представимо вам Компонент HttpFoundation та побачимо, що він нам принесе.