5

我听说过很多关于 ZEND、CodeIgniter、CakePhp 等 PHP 框架的信息,并且我也很清楚使用它的一些优点,例如提高生产力、减少错误等,但是 php 框架不会使编码过程变得复杂吗?没有框架的编码不提供更多的灵活性吗?有人说你不需要任何额外的框架,因为 PHP 本身就是一个框架。

那么为什么有这么多使用 PHP 框架呢?PHP 中真的需要框架吗?

4

3 回答 3

7

这是一个广泛的问题,我认为是一个重要的问题。除非绝对必要,否则我不使用框架。问题是,什么时候需要?

首先,我认为让我对框架产生这种奇怪的过敏反应的是,没有经验的编码人员想要将它们用于一切,甚至是微小的站点……这很奇怪。也许通过说他们使用过codeigniter来使他们的简历变得更大——但根据我的经验,这并没有什么大不了的。招聘经理需要技能组,而不是可以阅读 API 文档的人——任何人都可以做到。如果您具备有关程序架构和 OOP 原则的工作知识,那么您就会被录用。如果你不这样做,但你是一个codeigniter ninja,....eeehhhh.... 好吗?

框架有其用途,但我认为当你妈妈想为她的烘焙销售制作一个网站时,你可以使用更轻量级的系统将一个页面拼接在一起。我不相信您应该“以防万一”包含代码。随着时间的推移,我开发了自己的非常小的框架,这就是为什么我所构建的每个网站或应用程序都在谷歌的全球页面加载时间中排名前 2%(尽管通常是前 1%) .

这并不是说它们不好——只是不要跑去使用框架,因为你想把它放在你的简历上——从长远来看,你实际上是在自取其辱。为什么?因为您不会花时间使用语言本身,所以您将花时间使用框架的语言。以 jQuery 为例——我多年来一直避免使用它,因为它不是 JAVASCRIPT。人们对此嗤之以鼻——但现在,当我去参加技术面试时,我(不可避免地)被问到:“你对 jQuery 的经验水平如何”,我说“不多”,他们第二眼看上去很惊讶,但是然后我接着说“但我昨天刚刚通过本机 JS 中的控制反转编写了依赖注入”——我被当场录用了。

框架很棒。问问自己是否真的需要它们。特别是问题是:框架的时间收益(不要忘记平台的学习曲线)是否超过了自己编码的好处?一方面(非框架方法),你学到了很多,也许你需要更多的时间,因为你正在解决你自己的问题——但是你学到了很多关于语言本身的知识(在这种情况下是 PHP)。另一方面,您学习了一个新框架,并且可能更快地建立了一个站点,但很可能是较慢的。

在我看来,Wordpress 是过度使用框架的一个很好的例子。在我从事自由职业的日子里,我曾经参加过需要我“改造一个 wordpress 网站”的演出——只是为了找到一个几乎无法加载的网站,因为有人插入了他们能找到的每个插件,并将一个愚蠢的简单网站变成了一个带有未涂油胎面的坦克。在这种情况下,这是 OVERKILL 。

以我在 CTO 和 Tech Lead 职位上的经验,当有人将 Wordpress 和 jQuery 作为简历的主要内容时,对我说“我对 OOP 以及如何在需要时使用这些语言一无所知”,在现实世界(我从事大型项目,如 Windows 8 和其他如此规模的项目) - 经常如此。Microsoft 明确禁止在他们的 Metro 应用系统中为 MS 发布的产品使用 jQuery,因为他们想免费展示他们的系统依赖性。

然而,其他公司确实使用框架。我刚刚完成了一个使用 Foundation 的项目,它非常棒——但那是因为项目的架构师对框架进行了充分的研究,并且我们正确地使用了它。其结果是一个完全响应的原始代码库,从完整的显示器荣耀到 triscuit 大小的智能手机屏幕令人敬畏。

简而言之:

如果使用得当,框架会非常棒——尤其是对于大型项目(我说的是大型企业)。对于较小的项目,它们不一定是坏的——但是当它们被使用而不考虑它们的实现时,就像用斧头做手术刀一样。

只是我的2美分。

于 2013-06-05T18:15:48.930 回答
6

php框架不会让编码成为一个复杂的过程吗?

这取决于你想做什么。如果您正在做的只是为一个全是静态 HTML 的站点创建一个基本的联系表单,那么是的,使用框架会使它成为一个更复杂的过程。另一方面,如果您正在构建一个大型应用程序,那么使用框架不一定会使它变得更复杂。

没有框架的编码不提供更多的灵活性吗?

这取决于框架本身,它们并不完全相同。一些框架,如 Slim 或 Codeigniter 非常精简,不会妨碍太多,因此不会真正影响灵活性,有些则更复杂,如 Symfony2/Zend。

有人说你不需要任何额外的框架,因为 PHP 本身就是一个框架。

他们是对的,从技术上讲,你不需要框架,你可以用普通的 PHP 做任何你可以用框架做的事情。框架确实是从开发人员的个人函数档案和帮助代码演变而来的。PHP 的级别可能相对较低,因为它没有现成的函数来完成您需要的一切。在使用框架之前,开发人员倾向于拥有自己的一组帮助代码,这些代码可以在许多项目中重用。框架本质上仍然是这样,除了它们是成百上千的开发人员参与的协作项目。

框架的另一个好处是,如果您有多个开发人员,并且其中一个开发了一个应用程序,并且您希望另一个开发人员为它做出贡献或接管它,那么如果开发人员熟悉所使用的框架,他就可以加快速度在应用程序上比用纯 PHP 编写要快得多。如果没有该框架,新开发人员甚至在开始考虑添加任何新功能之前就必须破译以前的开发人员系统。

于 2013-06-05T18:08:43.470 回答
2

它们在 PHP 中是必需的吗?

不,他们不是,当然可以在没有框架的情况下编写任何代码。但这是更多的工作,就像:当我可以通过编写汇编程序来做同样的事情时,为什么我还要使用 C?

那么为什么有这么多的 PHP 框架的使用呢?

使用框架的好处是,您可以使用许多预定义的东西。例如,在大多数 PHP 框架中,您可以使用 MVC 模式。当然你也可以用扁平的 PHP 构建你自己的 MVC 结构,但这就像每次都重新发明轮子一样。唯一的问题是,如果您有非常具体的要求,您可以/不应该使用框架,但在大多数情况下,要求并不那么具体。

MVC 的重点只是众多好处之一。根据您要使用的框架,有特定的好处。

所以,就像你说的那样。通过使用框架,您可以节省时间,因为您不必重新发明已经存在的一切。

您可以将框架视为一种工具,它可以帮助您更好更快地开发。

编辑:就像 Ayesh K 在他的评论中提到的,这也是一个好处,一个框架是由许多专家开发的,所以它通常是更好的代码,遵循的原则是:“四眼看到两个以上”。

于 2013-06-05T17:58:22.157 回答