2008-12-22 96 views
1

我正在研究一个类似于项目的PHP CMS,我试图找出处理PHP中CRUD功能的最便捷方式。PHP中的简单/可重复使用的CRUD(无框架或大类)

CMS完全在程序PHP中编程(没有OOP - 我知道你们许多人不会同意这一点......),并且设计的目的是保持一切尽可能的简单和轻巧,并创建高度可重用的函数和代码片段。

CMS允许根据需要安装/激活多个模块。这些模块描述了不同类型的内容,所以我可能会最终得到像页面,新闻,博客等等。

对于每种内容类型,我都必须创建CRUD操作,现在我试图找到实现此目的的最便捷方法。

一个要求是这些内容类型中的每一个的表单都包含在一个外部文件中(对于插入和编辑)以及是否有某种方法可以将服务器端输入验证集成在一起。

回答

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_FormZend_ConfigZend_ValidateZend Framework(在这种情况下所有Zend_Config相当于加载和遍历XML和INI文件的便利接口)使生活真的很好。您可以让XML文件为每种内容类型定义表单,并且只需在页面上呈现表单(根据内容类型获取XML),获取过滤的数据,删除“常见字段”名称,创建/更新日期,然后序列化剩下的内容到数据库中。不需要特定内容类型的模式知识(除非你希望是严格的)。

尽管作为个人,我会强烈建议您考虑抓取Zend_Form(使用Zend_Validate和Zend_Config)以及使用Doctrine作为ORM /数据库抽象层。您可能会发现至少Doctrine会让您的生活在数据库上运行时变得更加轻松。

1

虽然作为个人一边我会强烈建议你看看抓Zend_Form的(与Zend_Validate的和Zend_Config的),以及使用Doctrine作为ORM /数据库抽象层。您可能会发现至少Doctrine会让您的生活在数据库上运行时变得更加轻松。

我同意dcousineau。为什么在已经完成的时候推出自己的产品?我也会看看Zend DB,如果你需要一个PHP4和5的解决方案PHP ADOdb

我最近开始了一个学术项目,和你有同样的愿望;最终我使用了PHP ADoDB。

+0

PHP ADOdb不是那种梦幻般的伴侣。 – kta 2013-10-11 13:38:31

0

我建议www.ajaxcrud.com - 它很容易使用,轻量级,并让你在几秒钟内启动并运行。

+0

与f0ska的答案相同:您在推荐您自己的商业产品时未透露此事实。 – 2016-05-19 22:20:37

0

你可以试试这个:http://xcrud.com,真的有帮助

+0

嗯,它肯定对你有帮助,因为它是你销售的产品。 – 2016-05-19 22:20:04