我正在开发一个类似项目的PHP CMS,我正在尝试找出在PHP中处理CRUD功能最方便的方法。
CMS完全采用程序化PHP编程(没有OOP - 我知道很多人都不同意这一点......)并且设计的目的是让所有内容尽可能简单明了,并创建高度可重用的功能和代码片段。
CMS允许根据需要安装/激活多个模块。这些模块描述了不同类型的内容,所以我可能最终会得到一些类似页面,新闻,博客的内容。
对于每种内容类型,我都必须创建CRUD操作,现在我正在尝试找到实现此目的的最便捷方式。
一个要求是每个内容类型的表单都包含在一个外部文件中(用于插入和编辑),如果有某种方法可以集成服务器端输入验证,那将是一个加号。
答案 0 :(得分:4)
通过CRUD操作你的意思是(繁琐的)数据库查询吗?
您可以轻松地设置数据库,这样除了内容类型中的一些常见字段外,特定内容类型的所有数据都将作为序列化关联数组存储在TEXT字段中。
这样,您只需要对CRUD任何特定内容类型的一组查询,因为传递给CRUD函数的数据只是盲目地序列化。
例如,假设我们声明内容标题,创建/更新日期,标签和简短描述被视为通用数据。从那里我们有一个博客和一个页面内容类型。
我可能会创建一个数据库表:
CREATE TABLE `content` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR NOT NULL,
`short_description` TEXT NOT NULL,
`tags` TEXT ,
`data` TEXT ,
`content_type` INT NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
(继续并假设我们将为content_type创建参考表)
虽然博客可能需要像“pingbacks”这样的数据,而且页面可能只需要正文,但您只需存储以下示例的输出:
$data = serialize(array(
"body" => "Lorem ipsum",
"pingbacks" => array()
));
更新非常简单,只要您从数据库中获取数据,就可以将数据反序列化以便编辑为基于内容类型选择的表单。显示工作的方式相同,只需根据内容类型获取模板,然后将其发送给未序列化的数据数组。模板永远不需要担心数据的存储方式,只需获取$ data ['pingbacks']。
至于你的表格,我的建议是打破你的反OOP契约并找到一个表格生成库。如果您可以从框架中提取它,则使用Zend_Form Zend_Config和Zend_Validate中的Zend Framework(在这种情况下所有Zend_Config数量都是一个方便的加载和遍历接口XML和INI文件)让生活变得非常好。您可以让XML文件为每种内容类型定义表单,而您只需在页面上呈现表单(根据内容类型获取XML),抓取过滤后的数据,删除“常用字段”,如名称,创建/更新日期,然后将剩下的内容序列化到数据库中。不需要了解特定内容类型的模式(除非您希望严格)。
虽然作为个人的一边,我强烈建议你研究一下使用Zend_Form(使用Zend_Validate和Zend_Config)以及使用Doctrine作为ORM /数据库抽象层。您可能会发现,至少在运行数据库操作时,Doctrine会让您的生活变得更加轻松。
答案 1 :(得分:1)
虽然作为个人的一边,我强烈建议你研究一下使用Zend_Form(使用Zend_Validate和Zend_Config)以及使用Doctrine作为ORM /数据库抽象层。您可能会发现,至少在运行数据库操作时,Doctrine会让您的生活变得更加轻松。
我同意dcousineau。为什么在它已经完成时自己滚动?我还要看看Zend DB,如果你需要一个PHP4和5解决方案PHP ADOdb。
我最近开始了一个学术项目并和你一样渴望;最后我选择了PHP ADoDB。
答案 2 :(得分:0)
我建议www.ajaxcrud.com - 它易于使用,轻巧,让您在几秒钟内启动并运行。
答案 3 :(得分:0)
你可以试试这个:http://xcrud.com,非常有用