PHP, Frameworks и Разработчики.

Подумалось... решил написать!

Вот что подумалось: Ведь почти каждый из нас, PHP-разработчиков когда-то хотел написать свой форум, CMS, FrameWork. И многие писали! Не говоря уже о том, что вариаций гостевых книг существует бессчетное множество!

Как следует из заголовка статьи речь пойдет именно о фреймворках. Я тоже не исключение и написал их целых два. Оба благополучно умерли, хотя на последнем еще до сих пор работает не очень крупный интернет магазин, с посещаемостью в 5000-8000 уникальных IP в сутки. Ну суть не в моих фреймворках, и даже не в общепризнанных, таких как Zend, Symphony, Cake и т.д. - суть в том зачем это надо и кому и какую пользу приносит изобретение велосипедов.

Я считаю, что каждый PHP-разработчик должен написать свой фреймворк. Уже вижу летящие в меня тухлые помидоры, но ловко уворачиваюсь продолжая пояснять почему. Я не считаю, что каждый разработчик должен работать только со своим фреймворком. Наоборот, не нужно использовать самописный фреймворк на крупных проектах, т.к. в этом случае приходится обучать команду, приходится тратить время на написание документации, на внесение необходимых изменений, даже если они вам не нравятся. На крупных проектах нужно использовать общедоступный и хорошо документированный фреймворк.

Но мы несколько отошли от тезиса! Вернемся. Оба моих фреймворка умерли, оставив мне бесценный опыт. Опыт принятия проектных решений, опыт ночных бдений над кодом, опыт покрытия кода тестами, опыт рефакторинга, опыт проб и ошибок. Если бы я не изобретал этих велосипедов, я никогда не узнал бы зачем нужен LazyLoad, почему Singleton не является серебрянной пулей, зачем нужен FilterChain, почему компилируемый шаблонизатор - это не так уж и плохо, что такое ActiveRecord и зачем прикручивать к нему Iterator,Observer,ArrayAccess и Countable, что такое Proxy, когда нужно его применять и чем он отличается от Decorator.

Вот почему каждый из нас просто обязан написать Framework. И не важно будет ли он использоваться кем-либо, кроме тебя самого!

Написание собственного фреймворка дает знания о том, какими должны быть имена классов и методов, как правильно построить интерфейсы, как управлять зависимостями в коде. На все эти вопросы нет однозначного ответа. Даже нет более или менее правильных ответов. Правильный ответ выбирает каждый для себя. Важно лишь то, чтобы потом можно было поддерживать написанный ранее код, чтобы потом можно было легко вносить изменения не ломая при этом целостность системы.

Наигравшись с собственными велосипедами я открыл для себя LIMB3. На тот момент в Limb переписали пакет CMS, и новый CMS как раз решал мои проблемы как нельзя лучше. Плюс появился генератор кода, который появился несколько месяцев спустя в Zend (ZendTool). Начать использовать Лимб было не совсем просто, но по мере углубления в код он мне нравился все больше. Таких красивых интерфейсов я еще не видал.

С началом использования хорошего фреймворка, но после написания пары своих в голову начинают приходить следующие мысли: БЛИН!!!! это ж так круто и так просто, но почему я до этого не додумался? Здесь решение очень похожее на мое, но несколько лучше! А тут пожалуй надо вспомнить как делал я, и предложить разработчикам сделать так же.

При удачном стечении обстоятельсв вы становитесь со-разработчиком, выбранного вами общеизвестного фреймворка, находя в этом огромную выгоду: вам нужно это поведение на следующем проекте и вы можете попробовать добавить его в общий репозиторий. Вот и этот фреймворк становится Вашим!

Новички! Пишите собственные велосипеды! Это ваш опыт и вам с ним жить! А вы, уважаемые ГУРУ, не плюйтесь при виде ужасных проектных решений, попытайтесь объяснить их автору почему бы вы сделали иначе.

Комменты

  • 05.09.2010 01:05:09 Maxim:
    Да уж, я свой первый framework так и назвал Bycicle. Это действительно полезная практика. Главное со временем возвращаться к коду и переписывать его заново.
  • 23.08.2011 14:03:37 Dmitriy:
    Да согласен с вами. Действительно очень полезно.
  • 02.09.2011 19:24:07 Александр:
    А что скажите по поводу фреймворка Yii?
  • 13.03.2012 18:38:27 Maxim:
    к Yii нормально отношусь. Последние пару недель с ним начал работать.
  • 30.07.2012 16:41:29 Анастасия:
    Писала блог на Yii... вначале сложновато было разобраться, но зато этот фреймворк удобный и скоростной. Сейчас решила попрактиковаться и написать свой собственный фреймворк, дабы добыть больше опыта в веб-программировании.