Статьи

Як створити свій сайт на PHP? Або навіщо потрібні фреймворки?

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

Але, проблема в тому, що це навчальні приклади. Як тільки ви спробуєте використовувати їх на практиці, ви побачите, як збільшується обсяг коду. Розглянемо обробку даних, отриманих з форми. Ми повинні:

- перевірити тип отриманих значень;
- переконатися, що значення мають допустимі величини (або формат);
- видалити з тексту заборонені теги (захист від XSS);
- замінити в параметрах SQL-запитів службові символи на їх ескейп послідовності (захист від SQL Injection);
- якщо параметри пов'язані між собою, перевірити ці зв'язки;
- і т.д.

Природно, цей код повинен бути не тільки написаний, але і протестований. Як бачите, пристойний шматок роботи. Причому в більшості своїй це рутинні операції, які повторюються практично у всіх додатках.

А тому програмісти народ ледачий і два рази писати один і той же код не люблять, всілякі рішення почали з'являтися як гриби після дощу.

Отже, сьогодні для створення web сайту (додатки) існує три основних підходи (або їх комбінації).

1) Використовувати «чистий» PHP + Стандартні і додаткові бібліотеки. Цей варіант найбільш трудомісткий, але при цьому володіє найбільшою гнучкістю. Ви можете реалізувати практично будь-який функціонал і при цьому забезпечити максимальну продуктивність. Правда є один нюанс. Хороший продукт ви отримаєте тільки після тестування і оптимізації додатки, а це зовсім не такий простий процес, як здається на перший погляд.

2) Використовувати готове рішення. На сьогоднішній день практично для всіх широко поширених типів сайтів існують готові движки. наприклад, WordPress , Joomla , PHPbb і багато інших. Тут можна взагалі обійтися без програмування, тому що ці рішення є готові сайти (блоги, портали, форуми тощо) ви тільки створюєте контент. Звідси і назва CMS (content management system) - системи управління контентом. Якщо стандартної функціональності не вистачає, то можна написати плагін (або знайти готовий). В принципі багато такі системи забезпечують непогану продуктивність, але тільки в тих завданнях, для яких вони спочатку проектувалися. Тобто ви зможете додати потрібні вам функції, але при цьому продуктивність (споживання ресурсів) може бути значно гірше, ніж в першому варіанті.

3) Використовувати фреймворк (framework). В принципі, фреймворк можна вважати додатковою бібліотекою. Але є суттєва відмінність. Бібліотеку ви використовуєте для розширення функціональності програми. А фреймворк крім того визначає архітектуру (взаємозв'язку між компонентами) додатки. Якщо використовувати аналогії з будівництвом будинку, то бібліотеками можна вважати цеглини, віконні та дверні блоки, а фреймворком - фундамент і несучі стіни (знаю, порівняння досить грубе, але суть відображає). В принципі, використання фреймворка це щось середнє між першим і другим варіантом. З одного боку свобода ваших дій буде обмежена в порівнянні з першим варіантом, але ці обмеження незначні в порівнянні з готовими рішеннями.

Я хочу розповісти про один з найпопулярніших PHP фреймворков - Code Igniter . Сьогодні я коротко зупинюся на його основні можливості, а в наступних випусках блогу покажу кілька прикладів.

Чому саме Code Igniter ? На сьогоднішній день існує досить багато PHP фреймворков. Але, Code Igniter, на мій погляд, володіє декількома важливими достоїнствами. Перш за все, це простота установки і настройки, а також хороша документація. Крім того, бібліотеки, що входять до складу цього фреймворка практично не залежать один від одного, що дозволяє знизити споживання ресурсів. При цьому ніщо не заважає використовувати свої власні бібліотеки замість стандартних.

В якості основного архітектурного шаблону Code Igniter використовує MVC (model-view-controller або по-російськи модель-вид-контролер). Про достоїнства і недоліки цієї архітектури написано дуже багато, але, тим не менш, на сьогоднішній день вона є найпоширенішою. Наприклад, в огляді Taking a look at ten different PHP frameworks розглянуто 10 PHP фреймворков, і 8 з них використовують архітектуру MVC.

Сайт, побудований відповідно до цієї архітектурою складається з компонентів трьох видів (моделі, виду і контролера).
На діаграмі показані зв'язку між цими компонентами.

На діаграмі показані зв'язку між цими компонентами

Діаграма 1. Архітектура MVC.

Контролер являє собою центр управління. Він отримує запити від браузера і обробляє їх.
Модель використовується для роботи з даними (наприклад, для читання / запису / поновлення даних в БД і т.п.).
Вид формує html сторінку, яка відправляється браузеру.

Примітка. З діаграми видно, що модель нічого не знає про інші компоненти, а вигляд не знає про контроллер.

Таким чином, ця архітектура дозволяє розділити три основних етапи роботи сайту (web додатки).

Природно, ви не зобов'язані використовувати всі ці компоненти. Можна написати код звернення до БД і формування сторінки прямо в контролері. Але чи варто так робити? Вам як мінімум буде дуже не зручно працювати з таким файлом.

Бібліотеки, які входять до складу Code Igniter допомагають вирішити практично всі звичайні завдання. Але крім цього, я раджу звернути увагу на два ресурси.

codeigniter.com/wiki/ - тут можна знайти безліч корисних порад і додаткових бібліотек.

www.ciforge.com/ - цей ресурс спеціально призначений для розміщення проектів, пов'язаних з Code Igniter. Якщо я не помиляюся, на сьогоднішній день тут розміщено понад двадцять проектів.

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

Успіхів!

цікаво почитати

сучасні навіси з полікарбонату прикрасять вигляд будь-якої будівлі.

Але чи варто так робити?

Новости