内容
问我要使用哪种框架,我可能会遇到一个脾气暴躁的老妇,告诉你所有框架都一样糟糕。并不是说它们确实很糟糕,但是在PHP中,我们有数量惊人的框架(通常引用为N + 1,其中N是世界上PHP开发人员的数量),而且它们都可能是有道理的给发明它们的人。
无论您要尝试构建什么框架,选择一个框架都可能比尝试仅使用一个框架更好,因为它是“最佳”框架(无论以何种方式衡量)。选择框架产品意味着您可以选择满足项目需求的内容,甚至可以将其记录下来。实际上,任何平台上的框架都可以提供结构,可重用的模块和库,并且通常避免一遍又一遍地构建相同功能所需的所有无聊和重复的任务。例如,在构建CMS时,应该为我处理和验证表单字段。如果留给我自己的设备,我可能会错过一些重要的事情,而我宁愿做每个项目的要素 不同的,而不是每次都一样!
全栈框架
对于没有大量架构经验的开发人员来说,全栈框架(例如Zend Framework)可能是一个不错的起点。它提供了一个良好的结构来挂载新的应用程序,并且周围有一个很好的“生态系统” –大量的书籍,教程和一些合理的文档。如果您试图构建一个将由很多人维护的大型应用程序,那么流行的,全面的框架很可能是一个不错的选择,因为它将决定很多结构并为人们所熟知和理解。
具有帮助分离的结构总是好的。在我职业生涯的早期,我曾与一些 非常 初级开发人员,并试图教给他们MVC(模型视图控制器)模式,这在当时是相对较新的。我们决定在视图层中使用Smarty。一方面使设计师可以更轻松地使用模板,另一方面使当有人来到我的办公桌前说:“我如何用Smarty做X?”我可以说“在视图中不要X!” (十分之九,就是答案)。拥有框架有助于我们在应用程序的其他部分中找到相同的分离。他们中的许多人确实支持与模板层(如Smarty或我最喜欢的Twig)集成,因此无论您选择哪种框架,都可以随身携带这些工具。
减轻负担
有比Zend Framework更轻便的框架,例如,我使用CodeIgniter进行了很多工作。它是否像Zend Framework一样全面和强大?不,不是。但是,作为帮助快速构建应用程序的帮助框架,它很有用。通常,“辅助功能”较少的框架可以更轻松地找到自己的出路,因为各部分之间的配合方式更加明显。在一个陌生的框架中(对我而言,这几乎是所有东西),正是自动的位使他们难以使用和调试。
这种“迷失在新框架中”的感觉是不可避免的,并且完全令人沮丧。即使是经验丰富的开发人员,在不知道如何工作的情况下,他们也会感觉像是新手。如果您真的很倒霉,那么您会选择一个框架,该框架的IRC频道会告诉您您也是白痴!正是这种非常负面的初始体验,使很多人开始使用新框架或一开始就采用新框架,而且很少有框架能够很好地帮助新用户克服最初的障碍。
在PHP中,有些框架并不是我通常使用的那种框架。我们有一些可爱的组件框架。专为随意使用和完美搭配而设计的库的集合,例如Zeta Components(以前是eZ Components)和Symfony Components(您看过它们的网站吗?它们赢得了最佳艺术品奖!)。当然,其中最好,最默默无闻的是PHP自己的PEAR和PECL产品-在这个勇敢的新框架世界中,它们以某种方式被忘记了。
微框架
微框架是PHP的新兴趋势。这些都是超轻量级的产品,它们可以帮助您更快地将它们粘合在一起。 Slim是一个很好的例子,它非常快速且易于使用,并且了解RESTful概念。它基于“路由”的概念,即URL模式。您注册一条路由并提供一个回调,当请求该URL时应调用该回调。
大多数PHP开发人员都采用并坚持使用框架,或者他们可能会在工作中使用一个框架,而在业余爱好或开源项目中可能会使用另一个框架。关于“最佳”框架的使用尚无共识,因此每个人都坚持自己所知道的,结果是大量框架并行开发!我喜欢从中选择,但是我是否提到它们彼此之间一样糟糕?
如果您知道Zend Framework,那么您最终将自己描述为Zend Framework开发人员。在没有机会掌握另一个框架之前,您将不满意在另一个框架中进行编写,并且如果您不经常使用它们,您可能会忘记很多原始的PHP函数。我们已经成为特定于框架的开发人员,只在抽象层之上工作的想法,对于PHP来说有点奇怪。毕竟,这是“解决网络问题”的语言。它是用C语言编写的,本身就是一种快速,轻便的语言,只要您不等待大型框架引导程序运行就可以!在这种情况下,出现了MicroPHP宣言,该宣言由我们称为Funkatron的人编写(尽管他的名字确实是Ed Finkler)。一系列声明说,可以构建许多可互操作的小模块,大的不是更好,而且实际上,对于Java来说,寿命太短了-即使它是用PHP编写的。