Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不使用框架的理由_Php_Architecture_Frameworks - Fatal编程技术网

Php 不使用框架的理由

Php 不使用框架的理由,php,architecture,frameworks,Php,Architecture,Frameworks,不久前,我读了一篇很棒的文章,其中描述了反对使用PHP可用的任何RAD框架的一些原因。基本上,它认为一个好的框架应该让你快速起步,然后应该让路。但是没有一个PHP框架能够做到这一点。它指出Django很擅长这样做(但这显然不是一个PHP框架) 就我个人而言,我现在找不到这篇文章 所以我很好奇。对于为什么应用程序不应该构建在RAD框架之上,有人有任何可靠的论据吗?我不一定要谈论通用应用程序(从定义上讲,框架试图解决通用问题。问题是这是否能很好地转化为特定问题) 当我说构建在之上时,我的意思是从底层

不久前,我读了一篇很棒的文章,其中描述了反对使用PHP可用的任何RAD框架的一些原因。基本上,它认为一个好的框架应该让你快速起步,然后应该让路。但是没有一个PHP框架能够做到这一点。它指出Django很擅长这样做(但这显然不是一个PHP框架)

就我个人而言,我现在找不到这篇文章

所以我很好奇。对于为什么应用程序不应该构建在RAD框架之上,有人有任何可靠的论据吗?我不一定要谈论通用应用程序(从定义上讲,框架试图解决通用问题。问题是这是否能很好地转化为特定问题)

当我说构建在之上时,我的意思是从底层开始,基于框架。我不是指将框架作为一系列库引用。我的意思是,将应用程序的整个体系结构建立在框架之外(然后将您绑定到框架中)

我也不是真的在谈论快速原型设计,因为代码可能会被重新编写。我更关注那些需要满足特定业务需求的长期应用程序,它们必须在相对较长的时间内得到支持和维护(以及修改)

我们总是听到为什么我们应该使用框架。原因有很多:

  • 不重新发明轮子(尽管我讨厌这个原因)
  • 更快的开发时间(因为跳过了体系结构)
  • 更容易引入新的开发人员
  • 常见问题已经解决
  • 等等
但我在寻找对立面

有什么想法吗?

一些想法:

  • 您正在创建的类型应用程序没有可用的商业或免费框架(想到的是自定义的基于硬件的应用程序)(这是显而易见的答案)
  • 系统具有扩展性需求,使用RAD框架(即框架值约定优于配置,您确实需要配置)会使扩展性需求变得更加困难
  • 项目范围很小,因此将学习曲线投资于使用RAD框架是没有意义的(如果您已经通过了学习曲线,这可能适用,也可能不适用)
  • 框架提供的工具/方法/后端/平台需求将带来不必要的复杂性(YAGNI,使用框架而不需要业务功能可能会增加支持成本,因为您必须支持整个过程,包括未使用的功能)

  • 不使用框架的一个主要优点是,您可以更灵活地编写代码。对于规模较小的项目,拥有这种灵活性通常更好。

    我最近在做一些框架研究。

    在某种程度上,我不得不同意。大多数框架并没有显著简化开发。特别是“MVC”框架更多的是抽象而不是实用。但是,总有一些功能对日常任务有帮助。ActiveRecord/ORM可以减少繁琐的手工工作。表单助手可能会这样做,但我还没有看到一个真正有用的

    通常我认为,框架提供的函数库代码越多,生产率就越高。但是在Zend框架的情况下,它随机地被复杂性所矮化。但是,请查看一些较小的框架。避免过于抽象。寻找脚手架工具,而不是库。

    • 有些框架需要shell访问才能部署
    • 可伸缩性,我已经读到切分是一个问题
    • 如果性能是一个优先事项,那么框架往往会降低执行速度
    • 并非所有的开发人员都熟悉MVC模式,所以如果开发人员轮换进入/退出项目,那么可维护性可能是一个挑战

      • 我一直担心的是,当框架停止维护/更新(无论出于何种原因)时会发生什么?您的项目被锁定在框架支持的任何PHP/MySQL版本中。

        这意味着框架是由一些默认情况下比您更聪明的未知英雄编写的。
        但事实上,这往往不是真的。
        它有缺陷,它可能是混乱和不必要的过度复杂。
        因此,拥有自己的帮助程序库通常比使用这样一个怪物更方便,因为它知道大约10%的特性。

        我唯一的问题是ORM并不是真的适用于所有数据集。特别是,如果您有大量数据,典型的实现就会失败(尝试通过大多数ORM实现连接两个1000多万行的表)。我对SQL很在行,所以为什么我要抛弃它,以降低效率(但“更容易”编写)。。。否则我同意……我试图为ORM创造一个术语“
        未存储过程”
        ”。它当然在抽象数据库结构细节方面有一席之地。但它有时比视图/触发器/存储过程的价格更高。@ircmaxell:任何值得一试的ORM都可以消除80%的任务的繁琐,这些任务可以使用它们的通用方法来处理,同时允许深入挖掘自定义方法(使用自定义查询/视图/存储过程/执行计划)在20%有特定(性能)要求的任务中…对不起,但是…什么是RAD框架?我很想说,我是代表那些不能使用谷歌的人提问的,但是……那是个谎言。=)快速应用程序开发框架