PHP:一千个框架的土地

问我使用哪个框架,我可能会有一个脾气暴躁的老女人时刻,并告诉你所有的框架都是彼此坏的。这并不是说它们都是坏的,但是在PHP中我们有一个难以想象的大量框架(通常被称为N + 1,其中N是世界上PHP开发人员的数量),它们都可能有意义对发明它们的人。

选择框架可能比仅尝试使用一个框架更好,无论你究竟想要构建什么,因为它是“最好的”(通过“最佳”的衡量标准)。这种框架产品的选择意味着您可以选择满足项目需求的东西,甚至可以记录下来。任何平台上的框架都可以提供结构,可重用的模块和库,并且通常可以避免所有无聊和重复的任务与反复构建相同的功能。例如,在构建CMS时,应该为我处理和验证表单字段;如果留给我自己的设备,我可能会错过一些重要的东西,我宁愿做每个项目的元素不同而不是每次都是一样的!

全栈框架

全栈框架,如Zend框架,对于没有大量架构经验的开发人员来说,这是一个不错的选择。它提供了一个很好的结构来挂起一个新的应用程序,并且周围有一个很好的“生态系统” - 大量的书籍,教程和一些合理的文档。如果你正在尝试构建一个由很多人维护的大型应用程序,那么一个流行的,全面的框架可能是一个很好的选择,因为它将决定相当多的结构并且是众所周知和理解的。

拥有帮助分离的结构总是好的;在我职业生涯的早期,我和一些人合作过非常初级开发人员并试图教他们MVC(模型视图控制器)模式,这在当时是相对较新的。我们决定使用Smarty的在视图层;部分原因是设计师可以更轻松地使用模板,部分原因是当有人来到我的办公桌时说“我如何用Smarty做X?”我可以说“不要在视图中做X!” (十分之九,这就是答案)。拥有框架有助于我们在应用程序的其他部分找到相同的分隔。他们中的许多人确实支持整合模板层,如Smarty,或者我的新宠,枝条,因此您可以随身携带这些工具,无论您选择哪种框架。

减轻负担

有比Zend Framework更多的轻量级框架,例如我可以使用相当多。它是否像Zend Framework一样全面而强大?不,不是。但作为一个帮助框架,可以快速构建应用程序,它很有用。一般来说,具有较少“帮助”功能的框架可以更容易找到方法,因为它们更加明显如何组合在一起。在一个不熟悉的框架中(对我而言,这几乎就是一切),它的自动化位使得难以使用和调试。

这种“迷失在新框架中”的感觉是不可避免的,令人沮丧;即使是经验丰富的开发人员,当他们不知道有什么工作时,他们会觉得自己像新手如果你真的不走运,你会选择一个框架,其IRC频道会告诉你,你也是个白痴!正是这种非常消极的初始体验让许多人不再使用新框架或者首先采用新框架,而且很少有框架能够很好地帮助新用户克服最初的障碍。

在PHP中,我们还有一些框架,它们通常不是我通常使用的方式的框架。我们有一些可爱的组件框架;图书馆的集合,旨在随意使用,并在一起很好地发挥作用,例如Zeta组件(以前的eZ组件)和Symfony组件(你见过他们的网站了吗?他们赢得了最佳艺术品奖!)。当然,最好的和最重要的是PHP自己的PECL产品 - 不知何故,这些在这个勇敢的框架新世界中被遗忘了。

Microframeworks

Microframeworks是PHP的新兴趋势;这些都是超轻量级产品,可以帮助您更快地将事物粘合在一起。一个很好的例子是,它非常快速且易于使用,并且理解RESTful概念。它基于“路线”的概念,即URL模式。您注册一个路由并给出一个回调,当请求该URL时应该调用该回调。

大多数PHP开发人员都采用框架并坚持使用它,或者他们可能会在工作中使用一个框架,而另一个则用于他们的业余爱好或开源项目。关于“最佳”框架的使用几乎没有达成共识,所以每个人都坚持他们所知道的结果,并且结果是大量框架的并行开发!我喜欢有一个可供选择的选择,但我是否提到他们都和对方一样糟糕?

如果您了解Zend Framework,那么您最终将自己描述为Zend Framework开发人员;在你有机会掌握它之前,你不会觉得在另一个框架中写作是不舒服的,如果你不经常使用它们,你可能不记得许多原始的PHP函数。我们已经成为特定于框架的开发人员,只在抽象层之上工作,这个想法对于PHP来说有点奇怪。毕竟,这是“解决网络问题”的语言。它是用C语言编写的,本身就是一种快速,轻便的语言......让您不必等待大型框架引导程序运行!从这个背景出现了MicroPHP宣言,由一个我们称之为Funkatron的人写的(虽然他的名字真的是Ed Finkler)。这是一系列的陈述,说可以构建一些可互操作的小模块,更大的并不是更好,而且实际上,Java的生命太短 - 即使它是用PHP编写的。



翻译字数超限