PHP内容管理系统TEEBB的设计构思

PHP内容管理系统TEEBB的设计构思

摘要:嗨,昨天介绍了至文内容管理系统(TEEBB),点这里看昨天的内容,今天我们聊聊这个“东西”该怎么设计! 开发这个系统的初衷就是要“高扩展高灵活”,毕竟客户“巴巴”的需求各不相同。OK,废话不多说直接上结构图!

嗨,昨天介绍了至文内容管理系统(TEEBB),点这里看昨天的内容,今天我们聊聊这个“东西”该怎么设计!

开发这个系统的初衷就是要“高扩展高灵活”,毕竟客户“巴巴”的需求各不相同。OK,废话不多说直接上结构图!

TEEBB结构图

如上图,我们把内容中相同的部分抽取为“字段”,根据功能不同暂归类为“常规字段”、“数值字段”、“引用字段”、“文本字段”。字段的详细介绍在这里只要你想,你可以创建自己的“字段”!  OK?

我们使用类型EntityType来对字段进行组合管理。可以根据功能分为不同的类型。如上图,TEEBB现内置了“内容类型”、“分类类型”、“评论类型”、“用户类型”,后续会在资料中讨论如何增加“表单类型”。

“内容类型(ContentEntityType)”:TEEBB的核心类型,我们添加的所有内容都基于内容类型,用于对所有内容进行管理。

“分类类型(TaxonomyEntityType)”:创建包含不同字段的分类类型,在内容类型中进行字段引用,通常用于内容分类管理。

“评论类型(CommentEntityType)”:创建包含不同字段的评论类型,在内容类型中进行字段引用,在前台页面根据引用的评论类型不同显示不同的评论表单。

“用户类型(UserEntityType)”:TEEBB中内置了唯一的用户类型(people),通常我们会固定用户(User)类的常用属性,比如:username、password、email等等,如果我们想动态增加用户的信息,在不修改数据库表的情况下,可以添加用户类型(people)的字段,以实现动态添加用户信息表单。“非常的方便!”

三、二、一、上类图!

这是一个简简简简简版的类关系图,省略了TaxonomyEntityType、CommentEntityType、UserEntityType的一些关系类及对应Controller类。

在TEEBB中每个类型EntityType都有对应的实体(Entity)类、实体类表单类型(FormType)、类型Controller,如上图ContentEntityType的实体类为Content、表单类为ContentFormType、Controller为ContentEntityTypeController。

实体Entity:用于ORM在数据库中存取数据。

类型FormType:各类型的实体Entity的表单。

类型Controller:为各类型的Router提供对应Action。

😭️Sorry!上图太过简略,我们可以发现:

1. 继承AbstractField可以自定义自己的“字段”,当然我们还要创建对应的FieldItem,FieldType,FieldConfiguration、FieldConfigurationType。

FieldItem:字段的Entity用于ORM对字段的数据进行存取。

FieldType:字段的表单类型,用于生成类型EntityType的表单时,动态添加的字段表单行。

FieldConfiguration:用于存储各字段的设置。

FieldConfigurationType:用于字段设置的表单类型。

2. 继承AbstractEntityType我们可以创建自定义的类型EntityType。我们还要创建对应的实体Entity,类型FormType,类型Controller 。

3. 如果你只是想让自己的网站内容更灵活,那就不需要考虑上文进行二次开发,在后台随意创建各种类型,添加字段,添加内容就好了。点这里试用DEMO!

这样的设计是不是就很灵活了呢?再加上Symfony的众多Bundle,这就很哇塞了!几乎想要什么功能都能很快的二次开发了吧?😄️😄️

OK,今天先到这里。下次继续补充!PEACE!

更多文章

开发TEEBB时踩过的坑--Doctrine动态Mapping

2021-01-06

TEEBB(至文内容管理系统)是基于Symfony开发的,使用了Doctrine的ORM套件。 TEEBB中类型EntityType的每个字段都在Mysql中对应了一张表。

开源PHP内容管理系统(TEEBB)介绍

2021-01-06

嗨,今天介绍一款我自己开发的内容管理系统(CMS):至文内容管理系统(简称:TEEBB) 之前朋友问我:"互联网的意义在哪里?",我回答:"信息传输的快"。你在北京发布一篇文章,在海南的朋友"立马"就可以看到。我想这就是互联网的意义。