PHP中常见的CRUD函数
有没有一种简单的方法可以为PHP中的每个CRUD(创建,检索,更新,删除)操作编写通用功能,而无需使用任何框架。例如,我希望有一个创建函数,该函数将表名和字段名作为参数并将数据插入到" mySQL数据库"中。另一个要求是该功能应该能够支持联接,即如果需要,它应该能够将数据插入到多个表中。
我知道可以通过使用框架来完成这些任务,但是由于种种原因,由于篇幅太长,无法在此处进行说明。
解决方案
没有任何框架就包括没有任何ORM?否则,我建议我们看一看教义或者Propel。
当然不是,这就是为什么这些框架存在并实现原始功能的原因。首先,我将尝试说服实际使用现有框架所需的人员,然后,通过以上失败,我将研究其中的一两个,并复制实现思想。失败了,我们可以看看http://www.phpobjectgenerator.com/
有可能,但我不推荐。
如果绝对没有使用框架的方法,则可以创建所有其他模型对象都可以扩展的基类。然后,我们可以根据get_class()
和get_class_vars()
使基类生成并执行SQL。
是否有可能?是的。
我会推荐吗?没有
如果尝试编写此类功能,我们很快就会发现我们刚刚意识到了另一个框架。
我知道你的感觉。
Pork.DbObject是一个简单的类,我们可以从中扩展对象。它只需要一个数据库连接类即可工作。
请检查:
www.schizofreend.nl/pork.dbobject/
(哦,是的,yuk @ php object generator。bloat alert!谁想在每个类中拥有这些自定义函数???)
我写的正是这种东西,就像是一种抛光的脚手架。基本上,这是一个类,其构造函数使用要使用的表,包含字段名称和类型的数组以及一个操作。基于此操作,对象将自行调用方法。例如:
这是我传递的数组:
$data = array(array('name' => 'id', 'type' => 'hidden') , array('name' => 'student', 'type' => 'text', 'title' => 'Student'));
然后我调用构造函数:
new MyScaffold($table, 'edit', $data, $_GET['id']);
在上述情况下,构造函数调用" edit"方法,该方法呈现一个表单,该表单显示$ table中的数据,但仅包含我在数组中设置的字段。它使用的记录由$ _GET方法确定。在此示例中,"学生"字段显示为文本框(因此为"文本"类型)。 "标题"只是所使用的标签。被"隐藏"时,ID字段不会显示出来供编辑,但可供程序使用。
如果我传递的是"删除"而不是"编辑",它将从GET变量中删除记录。如果仅传递一个表名,它将默认为带有用于编辑,删除和新建按钮的记录列表。
它只是一类,包含所有具有大量可定制性的CRUD。我们可以根据需要将其设置为复杂或者简单。通过使其成为通用类,我可以将其放入任何项目中,只传递指令,表信息和配置信息。我可能对于一个表不希望允许通过支架添加新记录,在这种情况下,我可能会将我的参数数组中的" newbutton"设置为false。
它不是传统意义上的框架。只是一个内部处理所有事情的独立类。这有一些缺点。关键必须是我所有的表都必须有一个名为" id"的主键,如果没有这个主键,我们可能会逃脱,但这会使事情复杂化。另一个原因是必须准备一个大型数组,详细说明有关要管理的每个表的信息,但是我们只需要执行一次即可。
有关此想法的教程,请参见此处
我认为我们应该编写自己的实现CRUD的函数,除非我们有时间紧张。它可能本身就是一个框架,但是在尖叫框架之前,我们需要了解框架的作用....了解这些内容也变得很方便,因为我们可以轻松地拾取框架中的错误并自行修复...。 ....