是否使用 PHP 框架? [关闭]

Posted

技术标签:

【中文标题】是否使用 PHP 框架? [关闭]【英文标题】:To Use a PHP Framework or Not? [closed] 【发布时间】:2010-10-23 10:59:57 【问题描述】:

我已经开始用 php 编写一些应用程序,并且我越来越熟悉这种语言。有人告诉我关于 CakePHP 和 CodeIgniter。我想更好地了解这些对我有什么帮助,以及花时间学习框架是否值得?

【问题讨论】:

这是重复的,查看这里***.com/search?q=php+framework Which javascript framework (jQuery vs Dojo vs ... )?的可能重复 【参考方案1】:

使用 MVC PHP 框架有什么好处?

嗯,使用 PHP 框架有很多好处,让我们看看使用它们的一些主要好处。

    这些 PHP 框架遵循一些设计模式,因此当您使用框架时,您必须遵循它们的编码约定,这使您的代码清晰且可扩展以备将来使用。 CakePHP、CodeIgniter、Zend Framework、Symfony 等流行的 PHP 框架遵循模型视图控制器 (MVC) 设计模式,该模式将业务逻辑与用户界面分离,同时使代码更简洁和可扩展。 每个人都可以猜到,这些框架包含许多库,可以让您的工作更轻松。例如:要验证一个表单,您不必像在正常编码场景中(不使用框架)那样编写那么多代码,只需调用库的几行代码通常就足够了。李> 在团队中处理大型项目时,MVC PHP 框架将是一个很好的开发工具,因为您可以指定开发人员为开发人员开发模块的一部分,并且这些已开发模块的集成将非常容易在最后一级。 这些 MVC 框架确实可以帮助您快速开发项目,如果您熟悉某个框架,那么您将永远不会担心项目的截止日期。 这些 MVC 框架中的大多数都使用清晰的 url 方法,使您的 Web 项目对 SEO 友好。

查看article

【讨论】:

除了第 3 点之外,您的所有要点都可以在没有框架的情况下同样好地实现。 你可以步行到你的目的地,你会到达那里,但我更喜欢用我的车 并非如此——除非您编写自己的 MVC 框架,否则它仍然是一个框架。即使你可以在没有框架(你自己的或其他的)的情况下实现 MVC 模式,你为什么要这样做?除非您只是涉足 PHP Web 开发并且在完成这个项目后不会再接触 PHP,否则您将希望能够重用您的大量代码,例如路由、ORM、会话管理、安全性等。您可能不用画笔也能作画,但这并不意味着使用正确的工具来完成这项工作没有好处。 ^我之前的评论是对 Jacco 的回应 en.wiktionary.org/wiki/plagiarism【参考方案2】:

我的理念是,你应该只在解决你当前的需求时才使用它。

有一个真正的趋势,特别是在这个领域,只是为了使用一个框架,或者因为你觉得你应该使用一些东西。我不鼓励这种做法。此外,我认为框架在您以艰难的方式完成工作时最有价值,因此您可以很好地了解您遇到的问题以及框架如何在这种情况下为您提供帮助。框架选择确实取决于具体情况。

话虽如此,带有 Web 应用程序的 MVC 模式很有用,因此至少学习一个肯定不会对您造成伤害。不过,我会坚持一个相当简约的框架。 CodeIgniter 在这里浮现出来。

最后,框架的另一个危险是它们可能非常具有侵入性,以至于您不再使用 PHP,而是使用 CakePHP、Symfony 或其他任何东西。这不一定是一个问题,但它如此具有侵入性的危险在于你没有很好的 PHP 基础,如果你想改变它就会太难,你永远无法做到。

【讨论】:

我同意。使用框架很好,但使用基于普通旧 PHP 和 HTTP 标准的框架,例如 Zend Framework。如果您想开发一个简单的应用程序,CakePHP 可能会很快,但如果您想要一些开箱即用的东西,那就太可怕了。这是在 URL (/my/page/foo:bar/this:that) 中传递参数的方式,让您认为旧方式 (?foo=bar&this=that) 不好,但事实并非如此。 我非常同意你的观点。我和你有同样的哲学。我确实看到人们只能使用一种语言的框架俚语进行编码。如果他/她离开了框架和配置文件,请举手。我个人尽量不使用任何简单的框架和一个最小的框架,如果我必须使用一个,我仍然可以假设内部会发生什么。只有当我需要做一些非常标准的事情并且我预计不会出现任何奇怪的事情并希望它非常快时,它才会变得复杂。 @BartvanHeukelom 关于 CakePHP 的命名参数的更新,“命名参数在 3.0 中被删除。在 1.2.0 中添加了命名参数作为查询字符串参数的“漂亮”版本。虽然视觉上的好处是有争议的,但命名参数的问题却不是。 link【参考方案3】:

PHP 框架的一大优点是它们可以最大限度地减少在大量常见 Web 应用程序需求中重新发明***。安全问题、优雅的异常处理、RESTful URL 和跨站点代码的可重用性是相当普遍的考虑因素。

熟悉框架的工具可能会更容易,然后看看您是否想采用它支持的完整 MVC 系统。为此,我建议您熟悉 Zend 框架。 ZF 作为一个类库工作,可以针对特定用途单独实现——从安全性到 Lucene 搜索——但包含的类在一起使用时,可以实现完全充实的 MVC 范例。

【讨论】:

【参考方案4】:

我只是想谈谈我自己的编程经验, 不过我还是新手

    首先通过使用框架,您将习惯他们的编码风格/规则,这很好,因为大多数框架都深入思考了他们如何编写代码。简而言之,我得到了更好的风格和更简洁的代码 通常框架带有许多库(插件和/或库),您可以在互联网上找到这些库,这将减少您的编码时间,减少浪费的时间。总之,您可以利用自己宝贵的时间思考业务流程 使用开源框架,有其他程序员已经知道并可能掌握了该框架,那么您可以轻松地与他人协作。 事实上,我不是一个组织良好的程序员,但那是在我使用一些开源框架之前。也许像我一样,你会变得更有条理

我现在只能和你分享这些,我不擅长用英文写作,对不起。但重点是我建议你使用框架

快乐的编码朋友。

【讨论】:

“新手”的优点,特别是如果他们要花时间理解为什么以特定方式编写某些内容。【参考方案5】:

我认为花时间学习 PHP 框架无疑是一笔不错的投资。一方面,它会教你有人如何解决构建框架的问题,如何组织你的 PHP 代码,以及如何处理诸如会话和数据库访问之类的事情......等等......

在大多数情况下,如果您认真地开发 Web 应用程序,您将需要使用某种框架,而不是从头开始编写自己的框架。

您不应该编写自己的框架的一些原因:

    您正在重新发明***,而这已经被重复了很多次。 您不太可能比开源框架做得更好,该框架已经过许多开发人员的测试和迭代。 与实际创建应用程序相比,您将花费所有时间编写和调试自己的框架。

所以,是的,学习几个框架并找到最适合您的框架!

【讨论】:

好点。我还要补充一点,与其自己动手,不如简单地为无数框架之一做出贡献。与其让 1000 名开发人员各自独立构建自己的框架,每次都重新发明***,不如让他们聚在一起,在一个框架上一起工作。 但是,如果您对现有的不满意(如我),则需要自己制作。哦,这很有趣:P【参考方案6】:

免责声明:我不是 php 程序员,也从未编写过 php 应用程序。另一方面,我已经为我的网站和购物车安装、定制和使用了很多 php cmss。

在我看来,php 存在严重的问题。最大的一个问题是,对于几乎所有大型甚至成功的项目来说,“框架”似乎都是一个外来词。 php代码往往很快就变成了意大利面条沙拉:意大利面条html混合了意大利面条代码和意大利面条sql。

osCommerce 是有史以来最成功的购物车之一,但几乎无法维护。这也适用于绝大多数 php 项目。

你是否应该为你的项目使用框架,我说是的!确实!无论您的项目有多大,使用 Web 框架都可以帮助您整理代码并编写可维护的代码。

即使您不使用框架,它也会影响您的编程风格。

【讨论】:

【参考方案7】:

使用 MVC 框架将使您的开发更加轻松。尤其是与数据库相关的应用程序。它为您提供了清晰的文件夹结构和大量的代码库。我建议你从 CodeIgniter 开始。

【讨论】:

【参考方案8】:

当您有一个开发团队在同一个项目上工作时,框架非常棒。 MVC 控制器将设计器 + 程序员完美地集成在一起。但是,创建“类似框架”的元素并“重新发明”***并不是一个坏主意。如果您正在处理一个庞大的项目,最好对您的代码进行处理并自定义所有内容以满足您的需求。它将成为一个更强大的产品,因为它将完全为该项目开发。

【讨论】:

你可以定制好的框架来满足你的需要。无需定制一切。就像重新发明 linux 或使用现有的可以扩展的,就像其他人过去所做的那样。只是不要重新发明你不必重新发明的东西。【参考方案9】:

以下帖子是对一个帖子的回应,该帖子在我写对 RenderIn 帖子的回答时立即关闭:https://***.com/questions/3265509/what-are-the-benefits-of-using-a-programming-framework。该线程已关闭,并且在 cmets 中放置了一个链接,将他指向此处,因此我将尝试在这里回答他的问题。下面的引号是我要提交的内容:

“请允许我向您和您的组织推荐 Joomla!。在我的上一个雇主,我不得不学习 PHP(之前没有使用它的经验),并且在大约一个半月后做了一些手工操作- PHP 编码,我的任务是编写一个 Joomla! 组件,为用户提供视频。我还必须创建一个后端,允许非技术管理员对视频进行分类、编辑、删除等以及为他们提供缩略图等。

现在为了得到一个可以工作的原型,花了大约两个月(当时我是一名实习生,每周只工作 20-24 小时,所以如果你有相当多的 PHP 经验以及MVC 开发方法,你可能比我更快地得到一个工作原型)。”

现在响应这个线程的 OP: 花时间学习一个框架绝对是值得的(直到我的帖子我才在这里看到它,所以我再说一遍:对于 PHP 框架,我推荐 Joomla!)。

学习框架(Joomla 等开源框架!)的一些好处:

一个庞大的社区,可以帮助回答您的问题(除了 ***;哈哈) 访问所有源代码,因此您可以根据需要对其进行自定义。 大量免费(和付费)第三方插件来增强功能。 大量教程。 框架负责自动执行许多日常任务。

参考第四条:Joomla!为您处理诸如数据库连接管理之类的事情,这样您就不必费心创建所有自己的自定义函数来连接到您的 mysql 数据库或返回不同类型的数据库结果(例如,一条记录,第一个结果的第一个结果)记录,记录列表等),您只需拨打他们的电话。 Joomla! 的 API 在其网站上公开提供:http://api.joomla.org/

无论如何,希望这有助于 RenderIn 和其他想了解框架(尤其是与 PHP 相关的框架)的人。

【讨论】:

【参考方案10】:

对我来说,一个框架是一个很好的工具,可以加快你的速度并节省你的时间,因为你只是不想花时间重做它,而不是因为你想节省你不想的时间'不知道多少钱。如果您这样做,您将为此付出代价。

对我来说,如果您已经是一名经验丰富的程序员,并且您知道框架在下面大致如何工作(只是大致不完全准确)并且有信心说,如果我愿意,我可以重新创建类似简化此框架的排序。那么框架对你来说就是一辆快车,如果你想做一些框架没有准备好的事情,或者一些不寻常的或其他奇怪的事情,它不会给你带来痛苦。

如果你不这样做,你最好尝试使用简单的旧 PHP 来解决你的问题,并经历在你手指上玩这种语言的痛苦,并首先了解良好的编程实践以及范式和模式。否则,您将成为加入大型团队的应届毕业生中的一员,他们的第一个项目正在开发一个具有非常强大框架的项目,该框架需要很少的编码,而需要更多的配置和修补。你永远不会成为一名优秀的程序员,也无法从头开始构建一个优秀的 PHP 应用程序。

如果您所在的组织使用复杂的框架怎么办?

花一些你自己的时间来解决这个例子中的普通 PHP 问题,直到你接触到我上面提到的内容。否则,您将永远不会对编程充满信心并不断告诉自己,“我只知道这些步骤就是实现它的方法”。那不是编程(有点极端:))。

复杂与简单框架

一些框架虽然被许多人使用,但只是压倒性的。有太多层您会忘记。这些框架通常用于一些刻板印象,大量配置文件,如果你想做一些不寻常的事情,你最好成为框架编写者(这里有点夸张:))。我不想在这里提任何名字,但是当你遇到一个时你就会知道。

【讨论】:

【参考方案11】:

CodeIgniter 是 EllisLab 团队的产品,他们的主要产品是使用 CodeIgniter 开发的 Expression Engine。

使用 CI 一段时间后,我发现使用 Yii 框架更方便。它有很多扩展。使用好的文档并不难理解。

CakePHP,我认为,接近 CodeIgniter。

【讨论】:

【参考方案12】:

我强烈建议您使用框架,而不是简单的脚本。有时它可能看起来有点矫枉过正,但我​​认为事实并非如此。有几次我认为我不需要它(简单的应用程序,3 db 表中的基本 CRUD)。

不久之后,我发现自己在做手动 mysql_escape_string、XSS 过滤等等。从那时起,当我认为设置需要比工作代码更多时,我只会编写非框架代码。而且这种情况很少发生。

如果我必须推荐一个 PHP 框架,我必须选择 CodeIgniter 或 Yii 框架,这取决于你的项目有多复杂。

【讨论】:

以上是关于是否使用 PHP 框架? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在没有“任何”框架的情况下使用 python 编写 Web 应用程序? [关闭]

任何使用像Magento这样的布局和块系统的PHP框架? [关闭]

好的 PHP 验证库 [关闭]

Symfony(PHP 框架)和 MongoDB(或任何基于 json 的数据库)[关闭]

Python Web开发 - 有或没有框架[关闭]

php 用户身份验证库/框架...都有哪些选项? [关闭]