全栈与非全栈 MVC PHP 框架 - 有啥区别?

Posted

技术标签:

【中文标题】全栈与非全栈 MVC PHP 框架 - 有啥区别?【英文标题】:Full stack versus non-full stack MVC PHP frameworks - what's the difference?全栈与非全栈 MVC PHP 框架 - 有什么区别? 【发布时间】:2010-12-03 04:03:16 【问题描述】:

我经常看到 Cakephp 和 CodeIgniter 被称为全栈 MVC 框架,而 Zend 框架被称为非全栈。这究竟是什么意思?

【问题讨论】:

【参考方案1】:

Zend Framework 是一个随意使用的框架,它允许您使用它的一些组件。您甚至可以在使用某些不同框架构建的应用程序中使用其中的一些组件。这样,随意使用的框架更像是一个类库。*

全栈框架意味着使用它的任何部分都取决于你使用它的全部。例如,必须使用框架的数据访问库、MVC 架构、代码生成脚手架等,这些组件都相互依赖,共同构成完整的框架。

关于您的评论:是的,耦合是一种看待它的方式。我将其视为假设和灵活性之间的平衡。全栈框架假设您将整个框架一起使用,并且根据该假设,它可以使一些额外的魔法发生。

ZF 旨在最小化假设(即最小化耦合)。它的组件很少假设您是否正在使用其余组件,从而减少了依赖性但增加了灵活性。但更少的假设意味着更少的魔法。

两种风格的框架都有合法的优势。


* 普通类库和框架之间的一个关键区别是框架旨在可扩展。我们鼓励您通过子类化或多态等 OO 机制来增强框架的功能。而类库可能假定您将按原样使用其 API,而不扩展其功能。

【讨论】:

哦,我明白了。所以听起来全栈类似于紧耦合。听起来很糟糕;)谢谢! 当你说魔术时,你的意思是你必须减少代码,因为框架会自动为你做出假设并处理更多? 例如,MVC 控制器可能会在特定目录中查找视图脚本和模型类,并使用特定的文件命名约定。如果文件存在并且具有正确的类名,它们会被自动加载和使用。不需要代码——只要你遵循框架的约定。除了文件命名约定之外,还有许多约定是可能的,例如数据库表和列必须以某种方式命名。这些想法与“约定优于配置”或“自以为是的编程”有关。 Codeigniter 无疑是目前最好的松散耦合 PHP 框架,它在性能和文件大小方面肯定胜过 Zend,更不用说内存占用了。这当然是我的观点,我有点偏见,因为我使用 Codeigniter 进行开发,但是我在工作中使用 Zend,它既可怕又丑陋。

以上是关于全栈与非全栈 MVC PHP 框架 - 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

PHP未来-Laravel-全栈框架1

“全栈2019”Java多线程第二十八章:公平锁与非公平锁详解

PHP中的静态方法与非静态方法有啥区别吗?

PHP全栈从入门到精通1

Python全栈100天学习笔记Day41 Django深入理解框架

Python全栈100天学习笔记Day41 Django深入理解框架