Zend Framework - это среда по желанию, которая позволяет вам использовать некоторые из ее компонентов. Вы даже можете использовать некоторые из этих компонентов в приложении, построенном с использованием другой фреймворка. Таким образом, структура использования по желанию больше похожа на библиотеку классов. *
Фреймворк с полным стеком означает, что использование любой его части зависит от того, используете ли вы ее все. Например, вы должны использовать библиотеку доступа к данным инфраструктуры, архитектуру MVC, леса создания кода и т. Д., И все эти компоненты зависят друг от друга, работая вместе для формирования полной структуры.
Re ваш комментарий: Да, сцепление это один из способов взглянуть на это. Я смотрю на это как на баланс между предположениями и гибкостью. Полнофункциональный фреймворк предполагает, что вы используете весь фреймворк вместе, и из этого предположения может произойти какое-то дополнительное волшебство.
ZF был разработан, чтобы минимизировать допущения (то есть минимизировать сцепление). Его компоненты делают несколько предположений о том, используете ли вы остальные компоненты, уменьшая зависимости, но повышая гибкость. Но меньше предположений означает меньше магии.
Оба стиля фреймворка имеют законные преимущества.
* Одно ключевое отличие между простой библиотекой классов и каркасом состоит в том, что каркас предназначен для расширения. Вам предлагается улучшить функциональность фреймворка с помощью механизмов OO, таких как создание подклассов или полиморфизм. В то время как библиотека классов может предполагать, что вы будете использовать ее API как есть, не расширяя его функциональность.