什么是PHP框架,什么是好的框架?

8

我正在运营一个关于PHP框架的网站,但是我找不到一个确切的定义,并且我一直在思考一个问题,如何制作一个好的PHP框架?特性?手册?效率?还是其他什么?

6个回答

28

在程序员论坛上询问什么是一个好的框架,就像在汽车论坛上询问什么是一辆好车。意见各不相同,在95%的情况下,你选择什么并不重要,只要它正在积极开发。大多数回复都是基于信仰而不是主观比较。 :)


我完全不同意。不同的框架有许多好的因素可以帮助你实现你的愿望!例如,框架的重量、速度以及在大型项目中所需的CPU等等。当然,还有一些技术特性是任何框架都没有的,我想我不需要举例子 :) - Mohsen Nemati
那是我的回答的一部分。在不了解你的具体项目需要简洁性、速度和功能强大之间的权衡的情况下,你不能说"什么是一个好的框架"。说某个框架非常好是没有意义的,因为没有一个框架能够完全适用于所有用例。 - Fuzzy76

15

框架基本上是您可以选择构建程序的结构。它可以使您连接到许多不同的API,并确定自己应用程序的结构。我使用Zend框架。学习起来可能不是那么容易,但肯定拥有构建出优秀应用所需的一切。建议您在该网站上查看快速入门指南,以开始使用。它使用模型-视图-控制器(MVC),这在我看来是必要的。一旦配置好,它会使事情变得非常简单!

其他框架包括CodeIgniter和Symfony。有些人喜欢CodeIgniter因为其占用空间更小。这完全取决于个人偏好。无论您选择哪种框架,请务必使用网站上的文档,因为它对了解最佳使用方法至关重要。此外,不要害怕偶尔查看代码,以更好地理解其工作原理。


10

并非所有的框架都使用脚手架,即代码生成。我认为至少Zend和CI不会这样做。 - PhiLho

7
在我看来,PHP框架是一组类,可帮助您开发Web应用程序。
在我的公司中,我们使用Zend Framework。我必须说,入门这个框架相当困难,但如果您掌握了如何使用API和参考指南,您将拥有一个很棒的框架。此外,它很有趣,因为他们有Zend人员参与项目,所以他们可以使用那些内部技巧,获得其他人无法获得的性能提升。
另外,ZF与其他框架不同之处在于,它能够轻松创建MVC程序。

“因此,他们可以使用那些内部技巧并获得其他人无法获得的一些性能提升。” - 这是胡说八道。Zend Framework是用纯PHP编写的,因此它没有比其他人更多可用的功能。如何使用PHP是一个不同的问题。 - cweiske

3

框架有很多优点-这里的文章也很好。但是请注意,它们并不总是最佳解决方案。您可能希望避免使用它们的原因有:

  1. 由于代码库的大小,它们往往很慢(例如,我见过引用Zend的简单PHP嵌入页面交付速度比普通速度慢10倍的数字-尽管这是其中较大的一个)。

  2. 它们在其预期工作的“领域”之外可能不太灵活。将框架扩展为执行非标准操作可能比从头开始编码要困难得多。

  3. 需要牺牲一些模块化。使用更简单的模板/控制文件系统(如TinyButStrong)的优点在于每个页面都是一个独立的单元,这自然倾向于使您的系统更容易进行单元测试和鲁棒性测试。

  4. 它们往往容易受到版本控制问题的影响。开发第一个网站很好,但在开发了十几个网站后,您很可能会发现您已经使用了三四个发布版本的框架,并且您有一个混合的代码库要处理-同步所有内容需要时间,您可能没有这个时间。

以上没有一个是反对使用框架的决定性论据,在许多(大多数?)情况下,优点会更加突出,但在选择框架之前,您应该首先考虑您的要求以及每个特定问题的最佳解决方案。


他们会更新框架(例如Zend),以便与新的PHP版本配合,而无需我改变我的代码吗?除了用新的框架替换旧的框架之外。 - M. A. Kishawy
如果你运行两个网站(一个使用框架,一个使用纯PHP编码),你是否真的能看到速度变慢?它真的会这么多吗?还是我们在谈论像0.0001秒这样的微小差距? - Mohsen Nemati
说实话,现在我已经大大改变了我的想法,很少会编写没有框架的代码,只有在最简单的任务中才会这样做。你是对的,现在的开销真的非常小。尽管如此,如果速度至关重要,我仍然会选择 CodeIgniter 而不是(在 95% 的情况下)更优秀的 Laravel。 - Cruachan

2

PHP框架是一个库,通过隐藏HTTP协议的某些复杂性或添加一些有用的功能,使网站开发人员的生活更加轻松。

例如,CakePHP实现了所谓的MVC,使开发人员可以思考比HTTP更高的层次。这是我迄今为止学到的东西。


2
它还将你锁定在PHP4上。天哪,不要啊。D:< - Rob Howard
它不再是这样了。我知道我在回复一个两年前的帖子,但我只是想确保那些想学习框架的人(比如我)不会认为这仍然是事实。 :) - dee-see

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接