为什么要在php上使用web框架(如rails)?

为什么要在php上使用web框架(如rails)?,php,ruby-on-rails,django,frameworks,models,Php,Ruby On Rails,Django,Frameworks,Models,这不是关于使用什么框架的问题。我已经学习了Rails和Django,我用PHP编写了所有的Web应用程序。我的问题是,为什么要为框架而烦恼?使用框架总是比重用旧的MySQL代码和使用phpMyAdmin构建“模型”花费更长的时间。我也喜欢自己写所有的东西,因为我知道发生了什么。我仍然可以重用函数等,并按照自己的意愿行事,而这种自由似乎在大多数框架中都缺失了 我不是说我的方式是正确的;事实上,我正试图找出我的逻辑失败的地方。炒作不能只是空谈。我遗漏了什么?框架允许您专注于应用程序本身,而不是担心必

这不是关于使用什么框架的问题。我已经学习了Rails和Django,我用PHP编写了所有的Web应用程序。我的问题是,为什么要为框架而烦恼?使用框架总是比重用旧的MySQL代码和使用phpMyAdmin构建“模型”花费更长的时间。我也喜欢自己写所有的东西,因为我知道发生了什么。我仍然可以重用函数等,并按照自己的意愿行事,而这种自由似乎在大多数框架中都缺失了


我不是说我的方式是正确的;事实上,我正试图找出我的逻辑失败的地方。炒作不能只是空谈。我遗漏了什么?

框架允许您专注于应用程序本身,而不是担心必须为每个应用程序编写的样板代码。它们允许您使用久经考验的设计模式(如模型-视图-控制器),以更具逻辑性(主要是面向对象的)的方式构建站点。框架中的代码通常比您为一次性项目编写的代码更为成熟,标准也更高,因为框架中有大量开发人员在一年内不断完善代码。这意味着框架驱动的站点通常表现得更好,也更安全


你还提到你喜欢自己写东西——我知道你来自哪里。我的解决方案是编写我自己的框架——我可以在我做的每个项目中重用和改进我的代码,我对整个代码库了如指掌。

我认为其中很大一部分是你关注的。框架标准化了您不必反复访问的部分,这有助于您将重点放在整个应用程序上。如果您一直重复使用自己的代码,那么您已经在使用自己的临时框架了。

我认为一个很好的步骤是使用您目前编写的代码创建自己的框架。;)

尝试使代码参数化,换句话说:创建可以在网站的不同部分(例如:样式化容器)或不同网站(表单生成器/验证器)中重用的组件

您甚至可以进一步创建基类,从中扩展新类以构建网站。(例如:具有通用选择/插入/更新/删除方法的数据对象)


我打赌这会让你更好地理解为什么框架如此方便;)

框架主要是为了帮助那些对PHP(或它所基于的特定语言)还不太熟悉的人建立一个安全的网站,并且可以很容易地在网站上添加额外的部分,而不必知道很多细节,比如安全性、MySQL(或其他数据库类型)。在我看来,这是一个相当好的方法,可以帮助程序员将代码分解成一种语言,当然,考虑到框架并不太复杂这一事实


编辑我之所以说它们是为初学者准备的,是因为我自己,作为一个初学者,使用框架可以更好地将自己划分为语言。

您将框架(Rails)与语言(PHP)进行比较。一个框架将为您提供预构建的组件,这样您就可以将时间花在使您的项目独特的方面

您可能已经有了一个代码库来帮助您完成这项工作。检查一些PHP框架,因为这是您更舒服的地方。看一看,和/或


如果你正在构建许多小型应用程序/网站,使用框架可能会让你的生活更轻松。

自己编写框架可能会让你更容易理解自己的事情,但不幸的是,它会让其他开发人员更难理解正在发生的事情。框架通常会有更好的文档记录,并且有一个更大的社区,可以支持正在开发您编写的应用程序的新开发人员。

最初使用框架需要更长的时间,原因与PHP开发人员最初使用Ruby需要更长的时间相同-您不熟悉Ruby


一旦您熟悉了这些框架,框架就可以提供跳过平庸的功能,专注于实际编写应用程序的重要部分。

我觉得您已经用php编写了自己的框架,因为您提到了代码重用


我可以想象,使用自己的一套轮子比适应别人的更容易。不必为此感到羞耻。

框架的基本思想是允许您在更高的层次上工作,只编写实现特定需求所必须编写的代码。所有其他重复的东西都由框架为您处理,可能比您自己处理的bug和安全漏洞要少得多

学习一个框架可能比自己使用基本语言功能和标准API要花更长的时间,但这根本不是真的——如果框架很好,应用程序也很重要,尤其是一旦你学会了框架(为每个新项目使用不同的框架当然是愚蠢的)并且考虑到发现和消除所有bug以及纠正所有设计错误所需的时间,这些错误早就被开发人员社区在框架中发现、消除和纠正了


几乎每个开发人员都有牛仔式的程序员本能,告诉他“自己做事情比使用别人编写的代码有趣得多,我相信我已经足够好了,第一次就把它做好了,所以它会更快更好!”。这些直觉几乎总是错误的。

您还应该使用基于PHP的框架,如Symfony或CakePHP。使用它们可以大大缩短生产时间

使用框架的一个原因是代码分离。以symfony为例。该模型都是通过propel或条令库完成的。几乎不需要SQL。实例化一个新对象和用户getter和setter,以存储数据,然后