Как стать автором
Обновить

От лапши к компонентам или Слушайтесь родителей!

PHP
Родители всегда поучают своих детей (на то они и родители). Детям всегда кажутся родительские советы глупыми и не нужными и лишь потом, уже имея своих собственных, мы понимаем, что родители на самом деле были правы.

Вот, например, моя мама всегда говорила мне три вещи:

1. Не переедай на ночь,
2. Не играй в азартные игры,
3. Не пиши своих php фреймворков

И сейчас понимаю, что зря ее не послушался. А тогда… Как же это давно было… Хотя не так уж и давно, всего-то полтора года назад.

Молодая команда бывших студентов решила заниматься разработкой web-сервисов. Web 2.0, Ajax, Rich Client, Mashup, Tag cloud — эти слова не сходили у меня с языка, а окружающие думали, что это обидные ругательства и частенько били. Поэтому было решено незамедлительно начать разрабатывать новые супер стартапы, которые наконец-то покажут этим неудачникам из Google их место. Сразу же встал вопрос: а на чем писать наши «нетленки»? Насчет языка мы даже и не сомневались — конечно же PHP. Почему? Потому что вся команда знала PHP, а ведь сам Джоел писал, что разрабатывать надо на том языке, который знаете. Второй вопрос был: как писать? Выбор был невелик:

1. Писать на чистом PHP, не задумываясь ни о чем (то есть, писать на «лапше»).
2. Взять какой-нибудь сторонний Фреймворк.
3. Написать свой движок.

Первое предложение было отвергнуто сразу же. Мы сторонники OOП, паттернов и прочей лабуды, привыкли видеть лапшу только на ушах у начальства, но никак не в коде. Сторонних фреймворков, соответствующих нашим запросам, мы не нашли, хотя очень старались (время было такое). Поэтому, для начала создали в SVN ветку framework и сели придумывать его название и архитектуру. После многочисленных споров, ругани и драк было решено назвать проект Adept.
Adept
Название было утверждено сразу же, потому что в отличии от других предложений, никто из участников команды не смог придумать какого-нибудь ругательства к названию.

С архитектурой дело обстояло тоже непросто. Сначала мы пошли по утоптанной MVC тропе. Однако, вскоре мы поняли, что классическая архитектура MVC не облегчает разработку. Программист продолжает выполнять множество скучных, однообразных, рутинных операций. И самое обидное было то, что реюзабельность кода была очень малой. То есть, если ли ты сделал, например, дерево для одного проекта, то для того, чтобы использовать его в другом проекте, тебе нужно копипастить HTML и руками делать множество мелких исправлений. Причем Html не особо подходит для программирования сложных UI компонентов (все-таки это язык разметки текстов), поэтому на реализацию всяких менюшек, табуляторов и т.д. уходит большое количество времени и сил программистов.

Мы решили сделать разработку интерфейсной части такой же простой, как и в десктопных приложениях. Мы отказались от классической MVC, заменив ее компонентной архитектурой. То есть, решили создать набор стандартных UI компонентов (кнопки, чекбоксы, радиокнопки, текстовые поля, таблицы), как и в десктопных приложениях, и просто строить интерфейс из этих компонентов.

Также мы решили реализовать event/listener модель. Сделав так, чтобы UI компоненты генерировали события (например: щелчок по кнопке, выбор определенного пункта из списка, и т.д.), программисты могли регистрировать слушателей (listeners) для обработки данных событий. То есть сделать такой Фреймворк, чтобы программисты занимались кодированием только бизнес-логики (что они очень любят делать), даже не задумываясь о том, «как же мне сделать календарь?». Найдя на свою, эммм, голову такую задачу, мы начали трудиться. Что-то получалось легко, но иногда ради реализации компонента приходилось продавать душу дьяволу (к сожалению, дьявол не смог заставить IE следовать стандартам).

А совсем недавно нас посетила мысль: «Может это еще кому-нибудь интересно? Может стоит показать его другим людям?». Однако это оказалось довольно трудной задачей (труднее, чем разработка). Надо писать документацию, чистить код, «вылизывать» иерархию объектов, сделать cайт поддержки и т.д. И тут встает вопрос: «А надо ли? Нужен ли php сообществу такой Фреймворк?» (глядя на дискуссии здесь или здесь, начинаешь подумывать об обратном). Не найдя ответа у себя мы решили спросить у вас, хабралюди. Ну что скажете?

Я, пожалуй, приложу ссылку:
http://adept-project.com
Теги:adept-projectphpweb-разработкаframeworkкомпоненты
Хабы: PHP
Всего голосов 66: ↑57 и ↓9 +48
Просмотры735

Похожие публикации

Ведущий web-разработчик / PHP-developer
от 140 000 ₽Сloud TeamМожно удаленно
PHP-разработчик / Backend Developer
от 100 000 до 200 000 ₽MediaLineМоскваМожно удаленно
PHP разработчик (Yii2)
от 140 000 до 180 000 ₽KotelovСанкт-Петербург
Fullstack PHP developer
до 180 000 ₽АЛМАЗМожно удаленно

Лучшие публикации за сутки