Есть некоторые вещи, которые вы не можете победить.
Любые рамки могут быть
- Simple
- Extensible
- Fast
- Понятный
- ...
Но вы не можете иметь все сразу. Это не может быть быстрым и расширяемым. Если он расширяемый, он должен проверить, хотите ли вы использовать внутренний класс или свой собственный. Он должен определить интерфейсы для всего. Поэтому он должен загружать много файлов (для классов и интерфейсов, тезисов, ...). Обратите внимание на разницу между классом загрузки MySQLDB
class (один класс для одной цели) и DbLayer_Interface
, DbLayer_Abstract
, DbLayer_MySQL
(полная инфраструктура, где вы можете заменить любую его часть).
Также с легкостью приходит немного магии. Чем больше фреймворк делает для вас, тем больше "волшебства" происходит под капотом. Магия может быть быстрой, так как она делается для одной цели и не должна проверять, хотите ли вы что-то изменить.
Вот почему ZF медленнее, чем CI и другие. Любой класс можно заменить. Например, мы расширили и внедрили собственный класс Db_Select, который автоматически обрабатывает многоязычные имена столбцов. Вы делаете выбор как SELECT table.name_en FROM table
, а логика, лежащая в основе, превращает его в SELECT table.name_en, table.name_fr, table.name_de FROM table
на лету ... Это сила, которую вы получаете в обмен на скорость;)