Добро пожаловать в цикл статей «Пишем PHP фреймворк». В данном цикле я буду поэтапно описывать как написать свой фреймворк. Обратите внимание в заголовке указан процент — это приблизительное количество выполеного объема работ по написанию своего php фреймворка.
Собственно сегодняшнюю дату можно считать датой начала разработки Intellect Framework-а. Напомню, я хочу разработать свой php фреймворк. Тока прошу, не надо мне говорит о том что таких фреймворков уже создано достаточно много, и что сейчас PHP разработчику достаточно выбрать какой нибудь из них, а не разрабатывать свой.
Но! В первую очередь я хочу при написании данного фреймворка научится правильно проектировать, WEB-приложения, а во вторую очередь, все таки я хочу что-то свое, родное.
Немного о том как будет разрабатываться фреймоворк.
Он будет написан полностью с помощью ООП. За основу естественно будет взята архитектура MVC.
Полгода назад я уже пытался разработать что то подобное, но тогда из за недостатка времени и знаний у меня, к сожалению, ничего не вышло. Сейчас вот вроде появилось время, да и знаний я подкопил достаточно, на мой взгляд. Плюс осталась часть исходников от прошлой попытки.
Немного о том что уже разработано.
От прошлой разработки у меня остался шаблонизатор и класс View. В принципе считаю, что это идеальный вариант шаблонизатора и идеальный вариант его класса — обертки.
Имеем вот такой шаблон (main.php):
= $title ?>
= $content ?>
Вот так с ним можно работать:
//Создаем объект
$view=new CView("main.php");
//Задаем нужные переменные
$view->title="Заголовок сайта";
$view->content="Содержимое страницы";
//Выводим весь шаблон
echo($view);
А также другие классы
- CMail — класс для работы с почтой
- CXMLParser — класс XML парсера
- CDate — библиотека для работы с датой/временем (поддержка временных зон)
- CInput — класс-обертка входящих параметров
- CFilter — класс с набором функций для фильтрации данных
- CHttpRequest — класс для работы с HTTP запросами
Не очень много конечно, но зато каждый из этих классов достаточно хорошо продуман и содержит весь необходимый функционал.
Заключение.
На данный момент работы — не паханное поле. Надо начать разрабатывать само ядро и прорабатывать архитектуру. Никак не могу решиться начать =(
2% — на мой взгляд вы погорячились. Пара готовых классов врятли составит даже 1% от нормального фреймворка.
А вообще ценю то что вы в качестве одной из причин указали желание научится «правильно проектировать WEB-приложения». Конечно врятли это прийдет с первого фреймворка, но это может дать, хороший, начальный опыт.
Искренне желаю вам удачи!
Спасибо вам за напутствие =)
Я не планирую выпустить фреймворк сразу с полным набором функций. На данный момент у меня в планах сделать более — менее целостную систему, которую можно было бы дополнять отдельными модулями. А два процента было выбранно чисто символически)