Привет. С каждым годом количество фреймворков увеличивается, появляются форки, некоторые становятся модными, а некоторые выходят из моды. Конечно разные фреймворки предоставляют разработчику разные возможности, которые прежде всего зависят от разработчиков, их идей, выбранной архитектуры, наличия документации… и конечно размера фреймворка. Вот об этом параметре мы и поговорим сегодня — всех заинтересованных попрошу под кат.
Посмотрим на вопрос с точки зрения новичка. Вот он уже изучил основы, что-то пишет на «нативном» php. Постепенно доходит до такого понятия, как «фреймворк». И вот он уже интересуетсяэтим вопросом, загуглил какие фреймворки самые популярные, у каких есть документация на русском, а у каких сообщество. Однако есть еще такой параметр как сложность или порог вхождения. И если он спросит совета на форуме, то ему скорее всего посоветуют Codeigniter или Kohana (реже Yii), нежели Zend Framework или Symfony. И это вполне логично и нормально.
Большой по объему фреймворк это хорошо или плохо? Что лучше: хорошее быстродействие или отличная архитектура и широкие возможности? Эти вопросы мы оставим для следующих статей, а сегодня посмотрим на самые маленькие и самые большие и объемные фреймворки. А считать мы будем количество строк и количество файлов.
В сети можно найти информацию о количестве строк того или иного фреймворка. Но данная информация показалась мне недостоверной и достаточно устаревшей (1-2 года я считаю большим промежутком в it отрасли), поэтому я решил путем подсчета сам получить эти данные. При этом возникает вопрос: что именно мы будем считать? Размышляя над этим вопросом, я пришел к выводу, что следует вести подсчет следующих параметров:
- Количество строк и файлов во всем фреймворке
- Количество php файлов и строк в них во всем фреймворке
- Количество php файлов и строк в них во всем фреймворке исключая сторонние компоненты
Для этой цели был написан небольшой php скрипт, который рекурсивно получал все файлы в папке, открывал их и считал количество строчек. Также попутно сохраняем количество файлов.
В эксперименте приняли участие популярные фреймворки (если я забыл ваш любимый — напишите, добавлю) и несколько CMS/CMF для наглядности. При замерах использовались последние версии с сайтов разработчиков.
В итоге я получил следующие данные:
Объект исследования | Полностью | Только php файлы | Только php файлы (без сторонних модулей) |
---|---|---|---|
Kohana 3.3.0 | |||
файлов | 1283 | 862 | 471 |
строк | 183228 | 119023 | 56874 |
Codeigniter 2.1.3 | |||
файлов | 352 | 147 | 147 |
строк | 88724 | 51525 | 51525 |
Yii 1.1.13 | |||
файлов | 2005 | 1621 | 1571 |
строк | 653970 | 614712 | 573114 |
Zend Framework 2.1.3 | |||
файлов | 2070 | 1963 | 1963 |
строк | 276248 | 272957 | 272957 |
Symfony 2.2.0 | |||
файлов | 5718 | 3583 | 2247 |
строк | 498788 | 418988 | 253408 |
CakePHP 2.3.0 | |||
файлов | 1012 | 654 | 654 |
строк | 251125 | 238350 | 238350 |
FuelPHP 1.5.2 | |||
файлов | 700 | 473 | 455 |
строк | 166730 | 96074 | 73118 |
Drupal 7.2.0 | |||
файлов | 1056 | 269 | 269 |
строк | 314574 | 150999 | 150999 |
Joomla 3.0.3 | |||
файлов | 4753 | 1651 | 1651 |
строк | 517145 | 303996 | 303996 |
WordPress 3.5.1 | |||
файлов | 1085 | 447 | 447 |
строк | 312529 | 192473 | 192473 |
А если найти примерное количество строк на один файл (при подсчетах использовались данные «только php файлы без сторонних компонентов»):
Объект исследования | Строк/файл (в среднем) |
---|---|
Kohana 3.3.0 | 120,7515924 |
Codeigniter 2.1.3 | 350,5102041 |
Yii 1.1.13 | 364,8084023 |
Zend Framework 2.1.3 | 139,0509424 |
Symfony 2.2.0 | 112,776146 |
CakePHP 2.3.0 | 364,4495413 |
FuelPHP 1.5.2 | 160,6989011 |
Drupal 7.2.0 | 561,3345725 |
Joomla 3.0.3 | 184,128407 |
WordPress 3.5.1 | 430,5883669 |
Итак, давайте проанализируем данные. Самым большим (по количеству файлов) в стандартной поставке является фреймворк Symfony, а самым объемным — Yii. Самым лаконичным (меньше всего файлов) является Codeigniter.
По среднему количеству строк в файле фреймворки разделились на 2 группы: 110-160 строчек в файле (Kohana, Zend, Symfony, FuelPHP) и 300-500 строчек в файле (Codeigniter, Yii, CakePHP), а середнячков и нету. Скорее всего это связано с архитектурой и на данные значения очень серьезно воспринимать не стоит.
Что же касается CMS/CMF, то результаты очень ожидаемы и могут содержать большую погрешность, т.к. в их составе находится довольно большое количество элементов относящихся к фронтэнду.
В заключение хотелось бы отметить, что результаты оказались вполне предсказуемыми. Однако сильно заострять внимание на таком параметре, как размер фреймворка не стоит. Программист, зная все плюсы и минусы каждого варианта, должен выбирать инструмент под конкретную задачу и использовать свои преимущества.
Автор: kpuzuc