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

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

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

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

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
Теги:
Хабы:
Всего голосов 66: ↑57 и ↓9+48
Комментарии247

Публикации

Истории

Работа

PHP программист
178 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань