首页 文章

从框架到无框架[关闭]

提问于
浏览
88

作为一个爱好,我已经用PHP开发了大约8年 . 在2009年,我选择了codeigniter,从那时起我就没有成功开发出一个项目 .

我发现它让我慢慢试图找出如何修改它以我想要的方式工作,如果我在纯PHP工作,我知道,或者我能够快速找到一个代码片段 .

我尝试过CodeIgniter,Kohana和Symfony . 我喜欢易用性(我也开始使用doctrine作为ORM,大大加快了我的数据库工作),但我发现项目花费的时间是纯PHP PHP的3-4倍 . 当我无法找到解决我之前在纯PHP中解决的问题的解决方案时,我感到无聊和沮丧 .

有没有人从使用框架回到无框架方法 . 是否有类似基本安全框架(阻止XSS,过滤发布的数据,提供与数据库一起使用的清理功能)?我认为这样的事情比完整的框架更有益于我 . 我认为学习使用框架已经教会了我很多,但我会更乐意使用我自己的代码 .

9 回答

  • 98

    当前版本的PHP5包含了许多您正在寻找的安全框架,作为标准库的一部分 .

    如果您接受HTML作为输入,我建议抓取HTML Purifier并通过filter_input_array设置中的FILTER_CALLBACK行调用它 . 其基于白名单的输入安全方法为XSS提供了一个很好的(并且非常强大的)第一道防线 .

    据我所知,PHP没有提供防范cross-site request forgery的机制,但我确信谷歌可以帮助你解决这个问题 . 如果您想实施自己的保护,OWASP Security Cheatsheets包含一个部分 .

    出于好奇,我决定开始查看独立组件,这是我到目前为止所发现的:

    模板:

    • PHP Template Inheritance(常规PHP加模板继承)

    • TWIG(Django / Jinja2 / Liquid-style语法包括autoescape和sandboxing . 编译为缓存的PHP以获得速度 . )

    • Dwoo(更快,更有特色,PHP5-ish后继Smarty . 包括现有Smarty模板的兼容系统 . )

    东西我仍然没有适当地调查:

    • 路线调度(到目前为止只找到RouteMapNet_URL_Mapper . 谢谢,cweiske . )

    • ORM(以防万一裸PDO不是你的事)

  • 2

    我不相信框架......我曾在其中许多人工作过 .

    仇恨MVC框架的原因:

    1)代码膨胀,我购买了帮助我开发的高级课程 . 如表单类或SQL类 .

    2)我认为MVC框架不易移植,尤其是在使用依赖管理器时 .

    3)我相信你实际上用MVC框架编写了更多的代码然后你必须使用一个样板来处理认证等大量有用的类 .

    4)大多数框架本身也只适用于一个或两个数据库 .

    我建议找一个带有身份验证和文本编辑器的表单框架和一个像madoo一样的SQL框架...

    90%的应用程序始终是表单,sql和ajax CLASSES - 其余的可以在需要时获取

    我是一个极简主义者,我在我的应用程序中没有做任何事情的代码的想法很困难......以防我需要它对我不起作用 .

  • 6

    根据您的声明,您已经使用PHP作为业余爱好,以及您的 Profiles 声明“慢慢到达那里”,这似乎是一个学习曲线问题 . 您似乎没有经验的深度和广度a)了解如何在框架所施加的结构内工作,以及b)您因此无法从框架所带来的效率中受益 .

    我敦促你坚持下去 . 回到视频教程的开头 . 查找并阅读其他人的代码直到你理解它 . 从下到上构建项目 - 简单地开始,并添加功能 . 关注论坛,在阅读回复之前尝试自己回答问题 .

    我已经在各种平台上进行了近20年的专业编程,而且我还需要一段时间才能熟悉CI . 但是现在,我不会回到纯PHP(对于我自己的项目),除非我有一个足够规模的网站,它暴露了可量化的性能问题(想想Twitter) .

  • 8

    有了这么多经验,你必须拥有自己喜欢的图书馆,亲自挑选并提出自己的简单框架 . 框架或没有框架(以及那个框架)取决于手头的项目类型,没有适合所有的手套 . 所以我强烈建议,如果您认为现有框架正在减慢您的速度,请花一些时间并提出一个符合您需求的框架 .

  • 1

    Zend Framework真的非常棒 . 您可以根据需要使用尽可能多的 . 它全部用php和开源编码,所以你可以破解它并使它成为你自己的 . 不同的组件不像其他框架那样依赖于每个组件 .

    你可以使用Zend的一些组件构建一个简单的框架,没有任何问题 .

    Check它出来了!

  • 2

    我完全了解你的感受 . 我在4〜5年前开始使用PHP(我来自Delphi,lol),并开始使用纯PHP . 我所拥有的是“CMS面板之类”,它只读取所有表格字段并创建表格 . 在某种程度上,我在PHP框架的知识中达成了某种程度,我首先尝试了CakePHP并且不喜欢,之后,在我看来进入Yii非常直观且易于使用(使用它的Gii生成器它几乎是摇滚) . 我试过Symfony,ZF2,Laravel,Yii2-Beta和RAD的一些框架,但我仍然感觉不像框架之前那么快 .

    发生了我自己开发的框架(很自然,不一定是我有一天醒来并说“我要创建一个新的框架”,与时间有关) . 我知道这是一个糟糕的糟糕的不良做法和“轮子重塑”的举动,但是,我现在更快地开发我的项目(仅比PHP更多) .

    由于它的代码是一个完整的MESS,我开始大约一个月前重新构建我的框架,现在它使用composer,遵循php框架之间存在的常见规则,就是MVC .

    我为什么要重新制定?因为如果有人需要修理我的项目,那将不再是另一件事 .

    所以我理解你 .

    我的建议是,准备你的工具(称之为框架,预设应用程序或任何人命名),并以你感觉更好的方式使用它,但仍遵循一些通用规则(如MVC,“易于模块化”的事情如果发生破损,你可以更换 .

  • 1

    对于基本安全性,我使用wraps up my superglobals的自定义过滤方法 . 它的语法需要一些习惯,但比PHP filter_var()API更简单,并且不会让你滑动清理:

    $_GET->text("inputvar") or $_POST->name["field"]
    

    它还允许内联$ _REQUEST-> sql()转义 . 但是对于数据库工作,请继续使用参数化SQL或您选择的DAL / ORM .

  • 9

    我做了一天ToroPHP的研究,发现它非常好 . 它是一个针对RESTful应用程序的极简主义框架 . 这使得可以保持服务器端代码模块化,而不必处理任何框架的膨胀 .

  • 1

    我不知道是什么让你烦恼但是codeigniter是一个很棒的框架 . 它有很好的文档,因为很多人使用codeigniter你会在其文档,论坛或stackoverflow中找到所有帮助 . 我已经在许多框架上工作( Codeigniter,CakePHP,Zend,Spring 3.0,Ruby on Rails),但我必须说codeigniter拥有最好的文档 . 在codeigiter中有很多东西可以自动处理,你不必担心安全性 . 使用核心PHP就像重新发明轮子一样 . 最重要的是,从核心迁移到框架将需要你的大量努力,一旦你习惯它,你会开始喜欢它 . 而且,一旦你了解它的来龙去脉,Ruby on rails也是一个很棒的框架 . 有倍速 .

相关问题