Главное Авторские колонки Вакансии Образование
2 989 12 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Какой фреймворк выбрать для веб сервиса

На чем лучше писать сайт? CodeInteger, Yii или другом фреймворке (далее Ф)? Мой ответ до этого был, однозначно на чистом пхп без фреймворка, но сейчас я понял- бесмысленно бороться с пропагандой вещающей, что "хороший продукт" должен быть написан не с нуля.
Мнение автора может не совпадать с мнением редакции

Один мой друг как то сказал, что любой программист рано или поздно хочет написать свою cms и свой фреймворк. Основные отличия по традиции: простота, много готовых модулей, высокая скорость работы.

Типичные проблемы популярных фреймворков (по материалам http://we-love-php.blogspot.ru/2012/10/php-framewo... статья хоть и старая, но сейчас это уже статус кво):

Typical problems in frameworks

  • необходимо писать много кода который просто ничего не делает, но "нужен" (example)
  • Слишком много абстракций (example)
  • Невероятно огромное количество строк кода (e.g. ZF1 260,000, ZF2 146,000 loc, Symfony2 173,000 loc, Doctrine2 70,000 loc), очень сложно оптимизировать, сложно поддерживать
  • Осень много различных функций (e.g. ZF1 13,000, ZF2 7,800, Symfony2 9,500, Doctrine2 4,400), сложно для обучения (у php я использую не более 500).
  • Огромное количество переопределений переменных (когда одни и те же данные просто перемещаются в памяти) (e.g. ZF2 4,080, Symfony2 3,800 (analysis from nikic))
  • Тяжелая документация (e.g. ZF2 1000 pages and 500 examples)
  • Очень много include (example)
  • плохое форматирование кода (e.g. ZF2 echo StaticFilter::execute($str, "HtmlEntities", array("quotestyle"=>ENT_QUOTES)); echo (new Zend\Filter\HtmlEntities(array("quotestyle" => ENT_QUOTES)))->filter($str);)
  • навороченный код (например, чтоб сделать запрос к базе нужно писать несколько строк кода, хотя все что нужно это всего лишь знать SQL)
  • несовместимость различных версий одного Ф, если вы написали сайт знакомств на yii 1+, то уже сейчас вышла версия 2
  • постоянное желание разработчиков "написать все с нуля" или выпустить "другой более легкий фреймворк"

Тесты показывают, что тот же YII в самом базовом варианте потребялет (за один заход посетителя) не менее 3 мб. оперативной памяти, когда например сайт знакомств на чистом пхп 0.5 мб. Это значит, что где обычному пхп понадобится один сервер, фреймворк затребует не менее 6ти, тут уже встает вопрос экономической целесообразности: писать правильно и использовать 6ть датацентров или использовать 1 и нанять 100 индусов которые выдают результат ценой абсолютной нечитаемости кода (у меня нет опыта highload на 6ть датацентров, поэтому заранее признаю, что не прав если кто то возразит приложив пример из своей практики). Конечно можно и нужно использовать кэширование и оптимизацию, но и для фремйворка и для чистого пхп это будет внешнее решение, например memcache и nginx

Существует так же большое заблуждение, что большой плюс Ф уже сразу идет с валидацией форм, проверкой входящих данных, автоматически подключает jquery. jQuery уже давно подключают верстальщики прямо в верстку одной строчкой (о боже, верстальщики делают то, для чего программистам нужен фреймворк! я сваливаю). Валидация форм так же подключается одной строкой, а проверка на заполненность форм по стандарту HTML 5 уже давно выполняется самим браузером (то есть вообще ничего кодить не надо). Остается проверка входящих данных и прочая безопастность и защита.

Почему же Ф так популярны? Основная причина, в том, что люди ищут "золотую пулю", одним выстрелом убить всех зайцев и ускорить разработку, мой личный опыт говорит ровно об обратном. Кодер тратит в 5-10 раз больше времени на исправление глюков, 90% из которого вслепую блуждая по файлам Ф и документации пытаясь понять "почему он работает не так".

Я с удовольствием бы производил Full stack проекты. Только вот бизнес требует результат вчера, максимум готов терпеть до вечера, причем то, что вчера сделали не годится ибо пивот. И так уже 10 лет. Посоветуйте, что делать

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем