在PHP中是否需要框架?[关闭]


9

在PHP中确实需要框架吗?

使用一个的优缺点是什么?


2
最近跑过这个SO职位,看起来相当有见地的关于使用PHP的无框架 stackoverflow.com/questions/3655145/...
马特·莫尔纳

Answers:


17

不,但是他们很好。

优点:节省了不必自己重建代码的时间。使用其他人构建的适用于您项目的各种功能,功能和数据结构。

缺点:如果您没有自己构建代码,那么在更好地理解项目运行的基础上可能会有所损失。


1
但问题在于,每天都有很多我不知道使用哪个框架
Tayyab Gulsher Vohra 2011年

4
@Tayyab你必须全部使用`!
2011年

1
您可以根据应用程序的需求和编码样式来选择框架。还问自己,您是否需要一个框架来滚动您自己的应用程序或CMS(Joomla,Drupal等)?
达伦·牛顿

2
您必须小心“未知的未知数”。如果您不使用框架,那么忘记或不知道框架为您解决的某些问题的风险很大。例如,您是否正确应对CSRF攻击防护?您的应用无需采取这种预防措施即可正常运行,但很容易被黑客入侵。选择一个主要框架(其中的任何一个)都意味着您将从Web应用程序必须关注的所有内容中受益,即使您尚未了解它。
Joeri Sebrechts

9

Web应用程序框架仅取决于您的使用经验。

每个框架都有学习曲线,直到克服该曲线,您可能最终都会做事,以至于倒退,从而否定了使用框架的所有好处。当发布新版本的框架时,您的应用程序将不必要地缓慢发展,代码将难以遵循,并且整个过程都会中断。我建议不要对期限紧迫的项目尝试使用不熟悉的框架(或任何不熟悉的技术)。

如何更好地利用框架?

您将必须构建一些令人讨厌的应用程序并进行迭代。最终,您将弄清楚这些怪癖,并且使用框架将使您的开发时间更短,代码组织得更好。

您应该使用PHP框架吗?

每个编写足够PHP的人最终都会使用框架。问题是,您将使用自己的框架还是由第三方开发的框架?以我的经验,您可能永远不会开发与第三方框架的健壮性和质量相匹配的自己的框架。也就是说,开发自己的框架似乎是PHP社区中的通行权利,因此,不要让我不鼓励您编写自己的数据库抽象类。

这是一个有用的图形:

在此处输入图片说明


7

根据Rasmus Lerdorf的说法,您不需要任何其他框架,因为PHP本身就是一个框架。 http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html


大家好,我是biginner,我正在尝试编写代码,我是新手,我想成为php的核心开发人员,所以请大家建议我
Tayyab Gulsher Vohra 2011年

3
那篇文章是2006年的,令人尴尬地过时了。
乔纳森·里奇

1
@JonathanRich:这篇文章甚至可能已经过时了,但是仍然令人尴尬地有趣!

4

好吧,这实际上取决于项目的大小。一个没有数据库且页面不超过10页的主页,框架将会太多,主要是因为framewroks在大多数情况下始终需要大量配置和自定义来满足特定需求。在某些情况下,它们可能比文件中包含的几页要慢一些(请考虑使用该功能需要加载所有框架)。

现在,如果您正在计划一个具有数据库交互,Web服务等功能的中型/大型站点,则将需要一个框架来帮助您与不同的技术进行交互并以一种在事情中断时可以组织代码的方式来快速发现并修复它的能力。另外,如果您考虑客户端,他们总是会改变对软件的看法,因此,如果客户端需要修改或添加新功能,则不必遍历所有代码并考虑如何将这一新功能插入所有功能中这条花粉。

还有很多其他优点和缺点,但这是我首先想到的。

编辑:我每天都使用symfony框架,并且还在大学里用php做过工作(我有一些关于Web开发的课程,不允许使用任何框架),所以大部分是来自这种经验。


1
好吧,我是php的初学者,还没有开发任何大的东西,我要混淆使用什么以及我应该去的东西,我真的是完全空白
Tayyab Gulsher Vohra 2011年

第一步不是使用它们,而是学习技术及其工作原理(php,框架,js,css等),然后一旦您了解了php编程的基础,然后使用Zend或Symfony或CakePHP之类的框架来学习如何提高您的应用程序
guiman 2011年

2

你在开玩笑,对吧?

必要性取决于使用情况。电脑不是人类所必需的,汽车也不是人类等。

至于优点/缺点,各有千秋!

我想在我自己的框架上展示一些示例代码:

class Product extends DatabaseRow {
    public $name='';
    public $price=0.0;
    public $images=array();
    public $description='';
    public table(){
        return 'products';
    }
}

$p=new Product();
$p->name='Bread';
$p->price=0.5;
$p->images=array('loaf1.jpg','bakery.jpg');
$p->description='Our premium diet bread.';
$p->save();

看看我在那里做什么?该类充当商店的榜样。除了OO还有什么特别之处?如果该表或任何列都不存在,则会动态创建它。0个安装脚本。当然,这是我框架中的特定功能。但是你明白了。


我想告诉你一些事情,实际上我正在使用2个框架,一个是codeigniter,另一个是yii,我想成为一名核心开发人员,但我的OOP概念并不是很好,事实是。
2011年

如何在$ p-> save()方法中区分'UPDATE'和'INSERT'语句?
斯丽莎2011年

@Srisa-我没有设置ID。要执行UPDATE,我需要:$p=new Product($the_id); $p->load();load()行合并到而不是覆盖整个行。
基督教徒

2

并非所有应用程序都需要框架,但是大多数相应的应用程序都需要框架。

优点是:

  • 不要重复自己 -任何新应用程序都将具有许多现有应用程序所共有的功能。避免重复自己很有意义。框架捆绑了大多数应用程序所需的功能。因此,您将节省时间(和金钱)。
  • 别烦自己 -通常,软件开发会非常痛苦。使平凡的东西自动化是有意义的。框架负责管道,因此您可以专注于深具创造力。因此,您将节省精力(和金钱)。

缺点是:

  • 我们的方法或没有方法 -您可能必须遵循框架的严格约定,这可能违反了您对应该如何做的教条信念(因而激怒了您)。
  • 获得性框架综合症 -您可能过于依赖框架以致无法完成最简单的事情。您将忘记如何路由请求,访问数据库,将对象映射到数据库查询等,因为该框架会帮助您完成所有这些工作。

总而言之,最好使用一个。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.