Стоит ли писать свой php-фреймворк с целью улучшения знаний в области ООП и изучения шаблона MVC?
253
27.04, в 03:44
В общем-то в заголовке поста все сказано :)

Чем обусловлен вопрос?

С детства интересуюсь программированием (вернее сначала это была простая HTML страничка с фото с бананами, картинками прямо в тексте, которые сбивали весь формат и т.д. :)). Сейчас изучаю HTML, CSS, JS (а с ним и jQuery), PHP (да и вообще много чего еще, но перечислил только технологии, связанные с вопросом). В данном вопросе речь пойдет о PHP. Я считаю, что знаю я его на некотором уровне — чуть выше плинтуса. Конечно же это относительный показатель, но по-крайней мере, теперь, читая вопросы на stackoverflow.com на эти темы, некоторые из них вызывают у меня улыбку (а если тема вопроса непонимание как сравнить 2 значения переменных и подписано в CodeIgniter или Zend Framework, то ржач), а не мои вопросы вызывают улыбку у кого-то.

Есть несколько проектов созданных мной (вернее это серия сайтов, со схожей тематикой, схожей целевой аудиторией) — это не огромные порталы, а простые сайты, с небольшой посещаемостью (опять же — очень целевая аудитория), но задачу они свою выполняют. Сайты созданы с использованием чистого PHP. Движок написан с нуля (не фреймворк, не CMS) мной.

Сейчас приходится поддерживать эти проекты и часто сталкиваюсь с тем, что все как-то не очень удобно. Речь о том, что все обработки, SQL-запросы, выводы на экран, логика — все в одной куче. Хотелось бы разделить это все как-то. Тут подходим к сути.

Как раз для этого и были созданы фреймворки — для того, чтобы облегчить жизнь программисту (встроенные функции, модули, плагины фреймворка) + для того, чтобы отделить вывод на экран от логики и от работы с базой данных. Правильно? Правильно.

Я считаю, что для того, чтобы что-то понимать нужно самому это сделать, а потом еще и научить кого-то тому, что ты сам понял. Я подумываю о том, чтобы создать самому что-то подобное (нет, никто не собирается спорить с Zend или Yii, боже упаси): во-первых, для изучения подхода MVC; во-вторых, расширить знания в области ООП; в-третьих, получить какой-то опыт. Создать такой фреймворк и, например, написать на нем портфолио (ведь пора бы уже).

Вот и вопрос: стоит ли создавать свой велосипед или "просто" "тупо" взять какое-то готовое решение и разбираться с ним?

Хочу услышать ваше мнение и, может быть, ваши зубодробительные истории из детства с HTML страничками :)

P.S.: надеюсь, не уснули, пока читали :)
P.P.S.: постарался преподнести вопрос не "чисто холиварным"
Ответы (5)
Сортировать по:
  • вы, видно, пока писали маоло думали.
    1. Если ставить цель заработать на этом денег, то это довольно хреновое средство заработка: "шедевр" создать вряд ли получится, если кто то и рискнет использовать, кто будет поддерживать? Для конечного клиента, корому это все нужно для зарабатывания денег совсем не нужен интерес ковырять код или искать причину взлома. Он постарается найти специалистов и продук пропорционально сумме, которую он готов платить. Поэтому тогда уж лучше напрячь усилия в сторону какого-то конкретного продукта, который конкурентно проталкивают другие люди. Или же самому конкурентно проталкивать. Но на двух стульях сидеть обычно седалища не хватает.

    2. Если все таки чтоб "понять, как она все таки вертится", то конечно неплохое решение. Но гораздо более доходным был бы точно так же ковыряться на каком либо oDEsk за деньги(пусть и не большие).

    3. На одном языке (хотя php - это скриптовый язык) невозможно "расширить знания в области ООП". Нужно как минимум еще пару, торойку поковырять. Чтоб понимать достоинства и недостатки конструкций, различия и функциональность.
  • Из своего опыта могу посоветовать поработать с чем-то готовым, и когда придет понимание, что и тут, и там что-то не устраивает, когда наберется достаточное количество аргументов в пользу написания своего - начинать писать, либо форкнуть существующий проект. Вы, наверное, сейчас не представляете себе на сколько это огромный кусок работы сделать фреймворк, который будет достаточно надежным, удобным, быстрым и расширяемым. Скорее всего это будет потеря большого количества времени. Если же вы сначала поработаете с готовым - будет понимание того, как проблемы решают другие, и появятся идеи как сделать лучше.
  • PHP — не лучший пример для изучения ООП…

    "Первый фреймворк" — это уродец. Первый блин комом. Без десятка лет опыта за плечами хороший фреймворк не состяпаешь. Такое решение вряд ли получится удачно примеить. Будет примерно такой же бардак, если не хуже.
    Как вообще момжно чему-то научится, если нет притока новых знаний? Если делать нормальный фреймворк, то он будет слизан с существующего. А от изучения внутренней и внешней структуры одновременно мозг будет перегружен.
    Для начала нужно правльно использовать существующий фреймворк. Не стоит делать лопату, если даже никогда не копал. Сначала понять, как правильно пользоваться интрументами (фреймворком, паттернами, концепциями и прочими направляющими на путь истинный вещами), а потом можно взяться за внутренню реализацию той или иной штуковины, чтобы узнать, как это работает.

    Людей, прекрасно понимающих MVC, куда больше, чем самодельных фреймворков. Смекаешь? :)
  • Не стоит, лучше взять несколько популярных фреймворков и как следует их расковырять
  • Были такие же мысли лет 6 назад. И все-таки начал делать свой фреймворк работая с php всего около года на тот момент. До логического завершения дело не дошло, сделано было: работа с базой, обработка страниц, контроль доступа, что-то вроде медиатеки, пагинация и другие самые азы.
    Сейчас посмотреть на свой код того времени без стыда и страха сложно, но в то время знания подтянулись прилично. Только времени у меня тогда было вагон.
    Автор, если есть время на это, и его не жалко - то я бы посоветовал делать не то что бы фреймворк, а отдельные файлы-модули, для повседневных нужд. И со временем улучшать их.
Написать ответ

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы