我不断看到Cake
PHP和CodeIgniter被称为完整的堆栈MVC框架,而Zend Framework被认为是非完整堆栈.这是什么意思?
Zend Framework是一个use-at-will框架,它允许您使用其中的一些组件.您甚至可以在使用一些不同框架构建的应用程序中使用其中的一些组件.这样一来,use-at-will框架就像一个类库.
一个完整的堆栈框架意味着使用它的任何部分取决于你使用它的全部.例如,您必须使用框架的数据访问库,MVC架构,代码生成脚手架等,并且这些组件都依赖彼此协同工作,形成完整的框架.
回复你的评论:是的,耦合是一种看待它的方法.我把它看作是假设和灵活性之间的平衡.一个完整的堆栈框架假定你正在使用整个框架,从这个假设可以使一些额外的魔法发生.
ZF被设计为最小化假设(即,最小化耦合).它的组件对您是否使用其余组件进行了很少的假设,减少了依赖性,但是增加了灵活性.但是较少的假设意味着更少的魔法.
两种风格的框架都有合法的优势.
*简单类库和框架之间的一个关键区别在于框架是可扩展的.鼓励您通过OO机制(如子类化或多态)来增强框架的功能.而类库可能假设您将按原样使用其API,而不扩展其功能.