Стоит ли писать свой Framework/CMS если есть уже готовые? Наверное многие об этом задумывались. Вопрос очевидный. Но ответ, наверное, будет многозначный. Часть сообщества — продвинутых крутых программистов скажут зачем изобретать велосипед? Все есть. Нужен сайт-визитка, пожалуйста есть такой, только под себя подправь. Нужен интернет-магазин пожалуйста. А хочешь свою социальную сеть, не проблема! Зачем писать свое где то корявое, где то ошибочное, а где то вообще ущербное.
Сейчас огромное количество разных СМS/CMF. Наверное многие согласятся что на первом месте стоит Zend, а дальше пошли все остальные. Zend с каждым годом «мужает» оптимизируется код, улучшается безопасность, появляются новые модули, возможности расширения и т.д. и это все благодаря тем отличным спецам что его поддерживают.
А что может предложить самописный фреймворк? пару «недомоделей» иногда не совсем ровных. И исходя из этого любой адекватный человек соберется с духом, отложит свой фреймворк на дальнюю полку возьмет Zend и за работу.
Мое мнение таково, когда человек/студент/новичек садиться за изучение того же php, немного почерпнув знаний из книг или интернета хочет сделать свой сайт. Начиная его писать от сталкивается с самой главной вещью, которая очень необходима — она заставляет думать как написать сайт: ядро пускай примитивное, работа с базой, файлами и т.д. Это включает думалку — дает возможность проявить себя как изобретателя, пускай, для себя самого, пускай и не совсем хорошего.
Чем больше попыток он сделает, пускай не удачных, тем больше будет опыта, и опыта исправлять свои ошибки. Важным аспектом есть то, что не стоит сидеть только за своим кодом. Лучший учитель — это смотреть как делают другие. Брать уже готовые фреймворки и разбирать и анилизировать их код. Собирать на этих «чужих» продуктах какие свои приложения. Смотреть как они функционируют используя уже готовую логики и архитектуру.
Лично, по своему опыту скажу что когда я начинал знакомство с php и пришел к выводу что нужно писать некое «ядро» для сайта, и обшарив много форумов получал ответы типа: «Чем Зенд плох?» или «Парень, не изобретай велосипед. Все придумали до нас». Это очень огорчало. А для новичка освоить Зенд не легко, даже по тем урокам которые сейчас есть в сети, в которых все разжевано. Когда ты не понимаешь для чего столько написано кода что бы сделать простое действие, которое, я якобы могу в своем фреймворке сделать 2 функциями, трудно соглашаться что Зенд или другой фреймворк лучше твоего. Конечно с временем понимаешь и начинаешь видеть дыры своего детища, и все чаще поглядывешь в сторону этого мега-монстра, разрушителя «детской психики», красавца Зенда или любого другого. Вот время и опыт это то что нужно, и не стоит бить по рукам, людей которые еще не доросли до того класса, что бы работать с готовыми фреймфорками.
Мой первый сайт было ужасное быдлокодерство. Все вперемешку код, html-теги, логика. Потом, я понял что ошибки сложно вылавливать из кучи файлов, и создал прообраз библиотеки с функциями. Это был для меня поднятие на один уровень выше. Но для меня было страшно и чуждо понятие ООП, классы, паттерны, синглтон. Но пришло время и мне стало ясно, что и файла с функциями уже не хватает. Сайт можно было сравнить с написанием игрушки на ассемблере, нечто похожее на низкоуровневое программирование. Я осознавал, что нужно что то новое, но ООП мне не никак не давалось, а на форумах все писали «ЗЕНД! ЗЕНД! ЗЕНД!». С трудом разобравшись с ООП я взялся за ЗЕНД. Но как то не срослось, я уже не говорю про другие фреймфорки. Единственное, что я стал делать с Зендом это смотреть его «внутрености», реализацию. Много чего не понятного было. В память записывались какие отдельные интересные решения. Потом пошли «под нож» другие фреймворки, желание узнать как делают умные люди усиливалось. Примеры реализации и код откладывался в мозгах, что потом вылилось в написание своего фреймворка. На 100% знаю что он в чем то ущерблен, но на нем я отработал все «боевые» приемы которые черпал все это время. После этого понимание того же Зенда или другого стали на порядок выше, а код более изящный.
Шарясь по Хабру наткнулся на пост Архитектура CMS где ув. mr_fresh написал к посту комментарий:
«Эх, многие из нас когда-то рисовали такие схемы и писали системы… Это классный опыт».
И таких постов много, и обидное, что многие такие посты затравлены. Не всем нужно становиться профессиональными программистами. Многим вполне достаточно своей собственной страничке в интернете.
Если делать логический вывод, то, мне кажется, самописным фреймворкам быть! Хотя бы для того, что бы расти как специалист, получать больше разносторонней практики. Потому какой бы совершенный и красивый код не писали бы специалисты, у каждого будет свое виденье, тех или иных задач. Так и рождаются свои фремйфорки. Кто то на своем выложить свой сайт а кто то заказчику сделает простой сайт визитку которая обновляется раз в год. Свой «самопал» это хороший полигон для учений, но не стоит забывать и про другие, хотя бы как примеры.
Автор: tytar
Спасибо, отличная статья. Почти закончил свой мини-микро фреймворк на PHP. Потом собираюсь писать на нем мой первый сайт – интернет-магазин. Этот процесс дает мне много опыта. Но все таки после самописного фреймворка нужно взглянуть в сторону профессиональных фреймворков
Все правильно, если стоит перед вами задача саморазвития, то при написании своего фреймворка понимание придет раньше, чем на готовом, но и на готовом тоже придет, пускай немного позже