Створення фреймворка на php5 - частина 1

Все більше і більше нам доводиться створювати динамічних та інтерактивних сайтів. Саме тому безліч розробників починають застосовувати в своїй роботі різні фреймворкі. Існує чимало хороших фреймворков, проте власний екземпляр може бути змінено відповідно повністю під ваші потреби і значно збільшити швидкість розробки проекту, звичайно ж, якщо ви знаєте, як з ним взаємодіяти. У цій невеликій серії уроків, ми покажемо вам, як створити власний фреймворк на PHP5! У цьому уроці ми почнемо з планування і закінчимо реалізацією структури.

* Замітка: при запуску демо ви повинні побачити "PCA Framework version 0.1 the HTML output", що продемонструє успішну роботу нашого застосування на першій стадії його розробки.

Крок 1: Трохи про цю серії уроків

У цій серії уроків ми будемо створювати свій власний фреймворк на PHP5 з нуля. Він буде включати в себе всі основні фішки системи управління контентом. Створювати ми його будемо для потреб невеликої організації, що орієнтується на веб розробку.

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

На протязі декількох тижнів ми розглянемо наступні теми:

  • Створення обробника аутентифікації, рівень абстракції бази даних і менеджер шаблонів
  • Об'єднання трьох об'єктів перерахованих вище воєдино
  • Використання фреймворка для керування вмістом сайту
  • Створення фантастичного дизайну для лицьової і внутрішньої частини сайту
  • Проектування і реалізація процесу входу в систему
  • Можливість розширення сконструйованого фреймворка

Крок 2: Шаблони проектування і їх використання в нашому фреймворке

Коли мова йде про створення якоїсь великої електронної системи, будь то десктоп програма або веб додаток, то завжди буде вставати руба питання про те, яку архітектуру застосувати для її імплементації.

Шаблони проектування - це якраз те, до чого потрібно звернутися при появі такого завдання. Для того щоб підібрати необхідний шаблон для нашого проекту, потрібно перебрати цілу купу подібних інструментів функціональної основи. Все це потрібно для того щоб наша система була флексибільну! Гаразд, більше не мучуся! У цьому уроці ми розглянемо шаблони проектування під назвою Singleton і Registry.

Крок 3: Файли та папки

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

  • Каталог для зберігання класів або файлів з функціями
  • Каталог для бізнес логіки
  • Каталог для елементів дизайну

Створення фреймворка на php5 - частина 1

Врахуйте, що каталоги .settings .project були створені IDE, який я використовую, і не претендують на те, щоб ви їх створювали у себе

Базові функції і об'єкти, такі як підключення до бази даних, аутентифікація, обробник шаблонів, об'єкти працюють з електронними повідомленнями, об'єкти, що обробляють електронні повідомлення, повинні розташовуватися всі разом в каталозі objects, який в свою чергу розташовується в папці PCARegistry. Це дозволить нам відокремити логіку, яка відноситься до Registry (за яким ми пробіжимося побіжно) від самого об'єкта Registry.

Тепер нам треба визначитися, в якому місці ми будемо зберігати файли, що відповідають за бізнес-логіку нашого фреймворка. Мабуть, папка controllers прекрасно підійде для цієї мети. Кожен метод, який є з точки зору програми важливим (висновок бізнес списків, створення і управління даними, генератор всіляких галерей і т.д.) буде представляти із себе окремий контролер. У цьому уроці ми не збираємося нічого такого реалізовувати, проте важливо, щоб ви розуміли, для чого потрібен цей каталог, таким чином, ви з легкістю зможете зрозуміти, як працює сам фреймворк.

Елементи дизайну сайту і його шаблони будуть зберігатися в каталозі skins. Оскільки в перспективі ми хочемо використовувати кілька дизайнів (наприклад, для того щоб користувачі самі вибирали, в якому стилі вони хочуть бачити сайт, або різний дизайн в залежності від пір року або в честь якогось свята), то кожен з цих шаблонів буде зберігатися в окремому каталозі.

Крок 4: Registry

Оскільки ми будемо зберігати інформацію централізовано, то нам знадобиться тільки один єдиний об'єкт класу, який буде доступний з будь-якої частини програми. Якщо не домогтися такого ефекту, то це може привести до проблем втрати якихось даних в самий невідповідний час. Для того щоб вирішити цю проблему, наш об'єкт Registry буде так імплементувати шаблон проектування Singleton, який буде перешкоджати появі більш одного об'єкта.

Нижче, у файлі registry.class.php ми побистренькому пройдемося по тому, як це все працює.

Отже, як же працює Registry?

Всі об'єкти зберігаються в масиві.

Коли в Registry передається новий об'єкт, то автоматично підключається клас, де зберігається функціональність даного об'єкта.

Доступ до даних об'єктів здійснюється за допомогою "ключа" об'єкта, переданого в метод getObject.

Ви запитаєте: ну як же відбувається запобігання створення копії об'єкта Registry?

Наш конструктор має модифікатор доступу private, для того щоб запобігти створенню об'єкта класу безпосередньо.

Спроба клонувати об'єкт призведе до виникнення помилки.

Якщо нам необхідно отримати доступ до об'єкта в якійсь іншій частині нашого фреймворка, або з якоїсь причини не можемо достукатися до нього безпосередньо, ми можемо використовувати метод singleton (PCARegistry :: singleton ()) для отримання примірника Registry.

Крок 5: index.php

Перед тим як пояснити, яким чином ми будемо приписувати функціональність в майбутніх уроках, давайте поглянемо на те, як ми можемо достукатися до Registry, і працювати з нашим фреймворком з однієї точки - файлу index.php.

ЧПУ або іншими словами, людино-зрозумілі урли можна зустріти вже практично в будь-якому веб додатку. Єдиний спосіб реалізації такого ж ефекту, полягає в тому, щоб всі запити йшли через файл index.php. У майбутніх уроках, ми створимо спеціальний файл .htaccess, для того щоб будь-яка частина нашого застосування перенаправляла користувача на файл index.php.

Нижче ви можете побачити код файлу index.php. Звичайно ж це не вся його функціональність. Це те, що потрібно нам на даний момент.

Отже ... що ж робить цей файл на даний момент?

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

На те, як працює об'єкт Registry в нашому фреймворке, ми створимо dummy клас. Ми можемо це продемонструвати завдяки класу template.class.php, який зберігається в каталозі PCARegsitry / objects. Для цього необхідно додати новий код в файл index.php.

Після того, як ми створили $ registry, можете вписати наступне:

Якщо в класі, який ми щойно згадали реалізований метод generateOutput, то ми без особливих труднощів можемо викликати його в index.php:

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

Створення фреймворка на php5 - частина 1

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

Створення фреймворка на php5 - частина 1

Створення фреймворка на php5 - частина 1

Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

Створення фреймворка на php5 - частина 1

Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

Створення фреймворка на php5 - частина 1

Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!

Схожі статті