是否有一种简单的方法可以为CRUD (create, retreive, update, delete)
中的每个PHP
操作编写一个公共函数,而无需使用任何框架。例如,我希望有一个创建函数,它将表名和字段名作为参数,并将数据插入mySQL database
。另一个要求是该函数应该能够支持连接I.e.如果需要,它应该能够将数据插入到多个表中。
我知道这些任务可以通过使用框架完成,但由于各种原因 - 这里解释得太冗长 - 我无法使用它们。
答案 0 :(得分:7)
如果你试着写这样的功能,你很快就会发现你刚刚实现了另一个框架。
答案 1 :(得分:3)
当然不是,这就是为什么这些框架存在并实施crud设施。我首先尝试说服实际使用现有框架所需的任何人,其次,如果不能解决上述问题,我会先看看其中的一两个并复制实现思路。如果做不到这一切,你可以看看http://www.phpobjectgenerator.com/
答案 2 :(得分:2)
答案 3 :(得分:2)
我知道你的感受。
Pork.DbObject是一个可以扩展对象的简单类。它只需要一个db连接类来工作。
请查看: www.schizofreend.nl/pork.dbobject/
(哦是啊,yuk @ php对象生成器。膨胀警报!谁想在每个类中拥有这些自定义函数???)
答案 4 :(得分:1)
我写了这个东西,它是一种抛光的脚手架。它基本上是一个类,其构造函数使用表,包含字段名称和类型的数组,以及一个操作。基于此操作,对象会自行调用方法。例如:
这是我传递的数组:
$data = array(array('name' => 'id', 'type' => 'hidden')
, array('name' => 'student', 'type' => 'text', 'title' => 'Student'));
然后我调用构造函数:
new MyScaffold($table, 'edit', $data, $_GET['id']);
在上面的例子中,构造函数调用'edit'方法,该方法显示一个显示$ table数据的表单,但只显示我在数组中设置的字段。它使用的记录由$ _GET方法决定。在此示例中,“student”字段显示为文本框(因此为“text”类型)。 'title'只是使用的标签。由于“隐藏”,ID字段不会显示以供编辑,但可供程序使用。
如果我通过'删除'而不是'编辑',它将从GET变量中删除记录。如果我只传递一个表名,它将默认为一个带有编辑,删除和新按钮的记录列表。
它只是一个包含所有CRUD的类,具有很多可定制性。您可以根据需要将其变得复杂或简单。通过将其作为通用类,我可以将其放入任何项目中,只传递指令,表信息和配置信息。我可能在一张桌子上不想允许通过脚手架添加新记录,在这种情况下,我可能会在参数数组中将“newbutton”设置为false。
它不是传统意义上的框架。只是一个在内部处理所有内容的独立类。这有一些缺点。关键的一点是我的所有表都必须有一个名为'id'的主键,你可以在没有这个的情况下逃脱,但这会使问题复杂化。另一个原因是必须准备一个详细说明要管理的每个表的信息的大型数组,但是您只需要执行一次。
有关此想法的教程,请参阅here
答案 5 :(得分:1)
我认为你应该编写自己的功能来实现CRUD,除非你有时间的压力。它本身可能是一个框架,但你需要在尖叫框架之前了解框架的作用......知道这些东西也很方便,因为你可以轻松地在框架上拾取bug并修复它们自己...... ....
答案 6 :(得分:1)
我在一段时间之前就遇到过这个问题而且当时我没有找到任何以轻量级方式做到这一点的事情。
我最终写了自己的,我最近开始采购它(麻省理工学院许可证)以防其他人认为它有用。它取决于Github,如果符合您的需要,请随时查看并使用它!
https://github.com/ArthurD/php-crud-model-class
希望它能找到一些用途 - 很想看到一些改进/贡献,所以随时提交拉动请求! : - )
答案 7 :(得分:0)
有可能,但我不推荐它。
如果绝对没有办法使用框架,您可以创建一个所有其他模型对象扩展的基类。然后,您可以使基类生成&根据{{1}}和get_class()
执行SQL。
有可能吗?是的。
我会推荐它吗?都能跟得上