基于ThinkPHP的微博系统设计与实现.docx
- 文档编号:26443332
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:43
- 大小:553.73KB
基于ThinkPHP的微博系统设计与实现.docx
《基于ThinkPHP的微博系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ThinkPHP的微博系统设计与实现.docx(43页珍藏版)》请在冰豆网上搜索。
基于ThinkPHP的微博系统设计与实现
摘要:
随着中国3G技术的成熟和发展,中国移动互联网时代正拉开序幕。
作为一种适应移动互联网的新兴的交流工具——“微博”,如雨后春笋般发展,被誉为一场“正在爆发的互联网革命”。
本论文提供了一款针对中国市场的多用户型微博系统。
本文针对目前国内主流微博产品所具备的主要特点和功能进行需求分析,设计、实现并测试了系统。
系统主要由微博模块、话题模块、群组模块、好友模块等四大应用模块构成,采用B/S结构,基于PHP5.0和MySQL5.0作为开发环境,采用ThinkPHP三层架构进行开发。
系统是一个功能完备的微博网站,可用于建站运行,也可在此基础上方便地进行二次开发。
系统管理员可以根据需要,对于系统灵活地进行各种配置,例如开闭用户注册、过渡关键词、系统名称等,方便建站。
关键字:
微博系统,B/S,PHP5.0,MySQL5.0,ThinkPHP2.0三层结构
DesignandImplementofMicroBlogSystemBasedonThinkPHP
WenHui
Abstract:
Withthematurityanddevelopmentof3GtechnologyinChina,ChinamobileInternetageisstarted.Microblog,asancommunicationtoolextremelyadaptabletotheemergingmobileInternet,isdevelopinglikebambooshootsafteraspringshower,andisknownas"anoutbreakoftheInternetrevolution".Throughthesoftwareprojectprogress,suchassystemrequirementanalysis,systemdesign,implementationandtesting,thispaperanalysestheproductioncharactersofDomesticmainstreammicroblogwebsitesanddevelopsthesystem.Microblogsystemismainlycomposedoffourmodules,suchasmicroblogmodule,topicmodule,groupmoduleandfollowmodule,andchooseB/Sstructureandthetree-levelstructureofThinkPHPtodevelopthissystem,basedonthedevelopmentenvironmentofPHP5.0andMySQL5.0.
Thissystemisafullyfunctionalmicroblogwebsite,whichcannotonlybeusedtosetupwebsites,butalsobeusedforre-development.Administratorscansetthesystem,suchasopeningorclosingregisterfunction,filteringillegalwordsornot,andchangingsystemnameetc.
Keywords:
microblogplatformsystem,B/S,PHP5.0,MySQL5.0,threelayersstructureofThinkPHP2.0
插图目录
表格目录
绪论
1.1项目设计背景及意义
2009年随着3G(3rd-generation)技术的成熟和牌照的发放,正式拉开了中国移动互联网时代的序幕。
作为新生事物的“微博”,以其简单易用性、广泛的影响力、快速传播力等,迎合了互联网时代的发展,迅速成为了互联网新兴起的一种集成化、开放化的互联网社交服务,被誉为一场“正在爆发的互联网革命”。
2010年国内微博迎来发展的春天。
微博像雨后春笋般崛起,新浪、搜狐、网易、腾讯、凤凰、和讯、搜房等综合门户均开始推出微博产品。
虽然只有几年时间,但中国微博用户量发展迅猛,据上海交通大学舆情研究实验室近日出炉的《2010中国微博年度报告》显示,目前中国微博活跃用户数量仅2010年上半年就已从一千万增至一千二百万,如图1-1所示:
图112010年上半年微博访问量统计
但是,一方面与社区交友网站以及博客等周覆盖人数上亿人的用户规模相比,大多数网民还没有设立自己的微博,微博还不够普及。
中国微博市场尚处于用户培养期,用户粘性和用户行为延续性都还需要进一步提高。
国内微博市场的巨大潜力还有待开发。
另一方面虽然目前已有初步成熟的微博平台,但这些微博平台多是娱乐型性质,针对某一特定领域的内容型、应用型和商务型微博还未有足够发展。
微博系统在此背景下应用而生,它实现了目前多数微博系统所具有的基本功能,提供了一个便捷、开放、可独立部署和运营的微博平台建站系统和解决方案,并有助于在此基础上针对某一特定领域进行二次开发[1,2]。
1.2微博系统的现状
目前国内主流网络所推出的微博产品无一例外都在学习Twitter的微博结构。
因为本地微博是提供中文语言服务,增强了国内微博的互操作性,将比Twitter等国外微博产品更容易吸引中国用户。
本地微博的发展经历了三个阶段:
引入期、沉寂期和成长期,如图1-2所示:
图12我国微博的发展历程
引入期:
2007年,是我国微博发展的引入期。
这一时期的微博以独立微博网站为主体。
2007年5月建立了饭否网,开启了中国的微博时代。
随后不久,叽歪网、做啥网相继上线,拥有数亿用户的腾讯也于2007年8月13日推出了腾讯滔滔。
沉寂期:
从2008年至2009年,国内微博客发展进入了一年的沉寂期。
期间,没有新的微博服务商出现,用户规模增幅也不大。
成长期:
从2009年8月开始,国内微博焕发出新的活力。
大量微博网站相继上线,用户规模激增,微博成为我国互联网发展的新的热点。
国内微博发展进入了快速成长期。
2010年可谓是中国的“微博元年”,各主流网站纷纷主推自己的微博产品,使微博了在中国有了空前发展。
但与Twitter的实质性相比还处于早期发展阶段。
Twitter即可为个人用户发表每日心情,也可以提高为企业宣传的内容信息。
但目前国内微博还是以个人用户为主,发布内容还没有呈现多样化趋势,也就很难催生出产业化的资源。
总而言之,目前国内微博还处于发展初期,以娱乐性的内容为主,还有待向内容多元化和商业化方向发展[3,4]。
1.3论文组织结构
第一章:
介绍项目的背景及意义、微博系统的现状。
第二章:
介绍相关系统特点、关键技术等相关知识及开发工具介绍。
第三章:
对微博系统考查,进行总体的需求分析,通过用列分析详细说明微博系统的功能需求和非功能需求。
第四章:
对微博系统进行概要设计、详细设计及数据库设计。
第五章:
展示微博系统的各个页面实现情况。
第六章:
进行系统测试,首先进行测试分析,然后写出测试方法,最后给出测试结果。
最后一部分用来进行小结、致谢并列出参考文献,附录部分主要包括对各个部分的截图。
相关知识及开发工具介绍
2.1PHP语言简介
PHP(HypertextPreprocessor),是一种HTML(HyperTextMark-upLanguage)内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。
PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
PHP安装它可以比CGI(CommonGateInterface)或者Perl更快速的执行动态网页。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
至PHP5.0版本时,PHP已经非常全面地支持面向对象的设计思想。
PHP由于代码开源免费、开发快捷高效、跨平台性强等特点,已经成为WEB开放主流脚本语言之一,近年来已经出现以PHP技术为核心的大型商业应用案例。
故本系统根据系统特点决定采用PHP作为开发语言[5]。
2.2ThinkPHP技术简介
ThinkPHP是一个性能卓越并且功能丰富的轻量级的开源PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。
ThinkPHP框架有以下特性:
1.简单易用的MVC模式:
模型(M):
模型的定义由Model类来完成。
Model类位于项目目录下面的LibModel目录。
控制器(C):
应用控制器(核心控制器)和Action控制器都承担了控制器的角色,区别在于Action控制器完成业务过程,而应用控制器(App类)负责调度控制。
Action控制器位于项目目录下面的LibAction目录。
视图(V):
模板的实现是和框架无关的,做到了100%分离,可以独立预览和制作。
模板目录位于项目目录下面的Tpl目录。
2.编译机制:
ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。
3.模型自动验证和处理:
系统内置了数据对象的自动验证功能,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。
需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的数组,支持的验证因子格式:
验证字段,验证规则,错误提示,验证条件,附加规则,验证时间。
4.模板引擎:
系统内建了一款卓越的基于XML的编译型模板引擎,支持两种类型的模板标签,融合了Smarty和JSP标签库的思想,支持标签库扩展。
通过驱动还可以支持Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎。
5.AJAX支持:
内置AJAX数据返回方法,支持JSON、XML和EVAL格式返回客户端,并且系统不绑定任何AJAX类库,可随意使用自己熟悉的AJAX类库进行操作[6]。
2.3MVC模式简介
MVC模式(Model-View-Controller,模型—视图—控制器模式)是软件工程中的一种软件架构模式。
它把软件系统分为三个基本部分:
模型(Model),视图(View)和控制器(Controller)。
MVC的结构如图2-1所示:
图21MVC模型
说明:
模型(Model):
模型包含了应用问题的核心数据、逻辑关系和计算功能,它封装了所需的数据,提供了完成问题处理的操作过程。
控制器依据I/O的需要调用这些操作过程。
模型还为视图获取显示数据而提供了访问其数据的操作。
模型为视图获取显示数据提供了访问其数据的操作。
为了实现这种机制,用于监视此模型的视图必须事先在此模型上注册,从而视图可以了解在数据模型上发生的改变。
视图(View):
视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。
它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。
视图通过显示的形式,把信息转达给用户。
不同视图通过不同的显示,来表达模型的数据和状态信息。
每个视图有一个更新操作,它可被变化-传播机制所激活。
当调用更新操作时,视图获得来自模型的数据值,并用它们来更新显示。
控制器(Controller):
控制器处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。
通常一个视图具有一个控制器。
需求分析
3.1用例分析
3.3.1用户用例
用户用例图如图3-1所示。
图31用户用例图
用例描述:
名称、标识符
关注好友功能
功能描述
关注好友,获取好友最新博文动态
性能
当用户点击“关注他(她)”按钮时响应时间<2s
输入
用户基本信息:
好友ID
操作序列
1.用户点击用户个人主页中的“Follow”按钮;
2.个人主页通过AJAX请求服务器中FollowAction中的addFollow方法;
3.FollowAction创建FollowModel,装填并检验好友ID,并调用FollowModel中的addFollow方法,进行数据库更新操作;
4.服务器将操作成功状态返回至个人主页;
5.将个人主页“关注他(她)”更改为“取消关注”
限制条件
1.必须连接数据库,否则会出现无法连接数据库错误
2.必须为本站已登录用户
接口
点击用户头像进入此页面
输出
返回用户个人主页
名称、标识符
浏览个人主页功能
功能描述
已登录用户浏览个人主页,包括用户个人信息以及好友最新微博动态
性能
当用户访问个人主页时等待页面时间<5s
输入
用户基本信息:
用户账号
操作序列
1.登录认证成功或点击页首“首页”,请求个人主页模块。
2.浏览器请求服务器中IndexAction中的home方法;
3.IndexAction创建UserModel,调用其中getUserBaseInfo方法获得用户基本信息,传至view中;
4.IndexAction创建BlogModel,调用其中getFollowingBlogs方法获得用户以及好友的最新微博动态,传至view中;
5.视图将数据装填至个人主页模板中并返回至浏览器
限制条件
1.必须连接数据库,否则会出现无法连接数据库错误
2.必须为本站已登录用户
接口
登陆认证成功,或界面“首页”
输出
返回用户个人主页
名称、标识符
系统推荐
功能描述
向用户推荐最热微博、最热话题、活跃用户和被关注用户排行
性能
当用户访问推荐时等待页面时间<5s
输入
用户基本信息:
无
操作序列
1.浏览器请求服务器中PublicAction中的recommend方法;
2.PublicAction创建UserModel,调用其中getActiveUsers方法获得活跃用户基本信息,传至view中;
3.PublicAction调用UserModel中getTopFollowedUsers方法获得最热被关注用户的基本信息,传至view中;
4.PublicAction创建BlogModel,调用其中getHotBlogs方法获得回复等排名最前的最热微博,传至view中;
5.PulicAction创建TopicModel,调用其中getHotTopics方法获得博文数最前的最热话题,传至view中;
6.视图将数据装填至推荐模板中并返回至浏览器
限制条件
1.必须连接数据库,否则会出现无法连接数据库错误
接口
除登录和注册之外的所有界面右侧。
输出
返回推荐部分
3.3.2管理员用例
管理员用例图如图3-2所示:
图32管理员用例图
用例描述:
名称、标识符
微博设置功能
功能描述
管理员配置微博系统的相关信息,例如微博名称、关闭用户注册等。
性能
信息处理时间<5s
输入
系统配置信息:
微博名称、微博域名、微博关键字、微博描述、关闭用户注册、过滤关键词、禁止注册用户名/主页名、网站备案号、微博版权信息等。
操作序列
1.客户端请求服务器SystemSetAction的getBlogSystemSet方法;
1.SystemSetAction创建SystemProperty对象,调getBlogSysProperties获取微博设置数据,并传至view中。
2.服务器将微博设置界面返回至客户端;
3.管理员修改配置信息,并点击提交按钮,浏览器请SystemSetAction中的setBlogSysemSet方法。
4.SystemSetAction接受请求,创建SystemProperty对象,对数据进行校验,并调用saveBlogSysProperties方法保存信息。
5.服务器将操作成功状态返回至客户端
限制条件
1.必须连接数据库,否则会出现无法连接数据库错误
2.必须为本站已登录管理员
接口
点击管理员系统设置中“微博设置”,或提交之后返回。
输出
返回操作成功或失败信息
3.2非功能需求
1.可用性
微博系统应对所有使用用户提供及时的服务。
系统应保证对24小时运作的客服系统的服务,系统维护时间应计划在服务的最低峰时间。
2.响应时间
进行数据查询时,当处于系统使用高峰期时应保证系统具有对95%的数据交互查询、更新提供3秒或更短响应时间的支持,当处于系统使用低峰期时应保证系统具有对95%的数据交互查询、更新提供2秒或更短响应时间的支持。
当进行数据添加、更新时,系统内部应提供对请求处理的来源及响应时间的监控机制。
系统响应时间因不同外部数据源和使用系统的通讯和接口情况而有所差异。
3.可靠性
微博系统不应在正常操作中丢失数据,当用户正在使用系统时,系统不应瘫痪,应对所有的使用人员提供每年365天,每天24小时,每天3班的系统监控支持,而每月突发的宕机时间不超过4小时。
4.易于使用性
微博系统应有操作、故障排除手册来帮助系统管理人员来快速解决系统问题。
系统、管理/操作界面应易于使用,对操作人员的培训时间保持在较短的时间内。
5.安全性
微博系统中提供普通用户和管理员权限两项安全性身份验证。
其中,管理员可对普通用户进行授权操作,以便方便系统管理。
6.备份和灾难的及时恢复
微博系统应每天对所有运作相关的数据进行备份,以及备份的微博系统,以防止运行系统瘫痪时能及时使用备份数据库重新提供系统的服务。
3.3系统目标
本文是针对目前国内主流微博产品所具备的主要特点和功能进行设计,具有对微博、话题、群组、好友等完整的功能,应具备如下特点:
1.完备的系统功能
本系统是一个功能完备的微博网站,可用于建站运行,也可在此基础上方便地进行二次开发。
2.灵活的系统设置
系统管理员可以根据需要,对于系统灵活地进行各种配置,例如开闭用户注册、过渡关键词、系统名称等,方便建站。
3.个性的个人管理
用户不仅可以设置昵称、性别、头像等基本信息,而且可以设置个人首页网址等个性化的信息。
根据本文应具备的特点,现提出主要目标如下:
1.实现基础功能,便于二次开发。
任何一款互联网产品都有特定应用领域,特定用户群体及其需求。
而本系统的定位于实现目前多数微博系统所具备的基本功能,并使其框架结构具备灵活、易用性、扩展性等特点,以便其它用户在此基础上针对具体应用进行二次开发。
2.博文应具备多媒体形式,含文字、图片、表情等。
微博的主要特点之一在于其具有“平民化”的特点,因而博文需要承载丰富的内容。
这便要求对于博文的信息呈现具有多样的形式。
所以除了文字以外,还需要有图片等多媒体呈现形式,和表情、分享等为满足“娱乐化”的功能。
3.本系统应该具备向用户推荐好友、博文、话题等功能。
当新用户注册登录后,需要有人性化的引导过程,其中应当包括推荐好友功能。
另外,推荐好友、博文、话题等,应当放到系统醒目位置,以便更加人性地服务用户,增加用户体验。
4.本系统提供关注好友功能以及群组功能。
微博平台主要以广播用户消息为主,故采用单向关注,即允许在未经被关注者同意之下对其关注。
而群组功能,则类似于讨论组,由管理员针对某一特定关系群体创建,可由用户对群组广播消息,其它用户可查看群组消息。
5.用户提供对博文多种多样的操作,包括顶、踩、评论等操作功能。
当关注者对于某条博文非常感兴趣或观点而希望能够表达其想法时,本系统应当提供一些简单、便捷的使用方式;系统并可据此从而决定推荐关注度非常高的博文给所有用户。
6.允许用户就某一话题发表相关博文。
由于博文限定140字,内容虽小,但数据量非常大,难以形成针对某一话题的相关应用。
故需提供话题功能,以便系统对博文进行良好的组织,并从而为用户提供话题搜索等相关功能。
系统设计
4.1概要设计
4.1.1系统体系结构
本文所采用ThinkPHP框架作为系统架构。
ThinkPHP框架的设计采用MVC设计模式。
在ThinkPHP中,Action对应MVC控制器,Model对应MVC模型,View对应MVC视图。
ThinkPHP的MVC的结构如下所示:
模型(Model):
ThinkPHP模型包含基本Model类和AdvModel类。
基本的CURD、ActiveRecord模式、连贯操作和统计查询,一些高级特性被封装到另外的模型类中,例如AdvModel高级模型类完成了一些包括文本字段、只读字段、序列化字段、乐观锁、多数据库连接等模型的高级特性,ViewModel视图模型类完成了模型的视图操作,RelationModel关联模型类完成了模型的关联操作。
基础模型类Model的设计非常灵活,无需进行任何模型定义就可以进行相关数据表的ORM和CURD操作。
本文只涉及到基本Model类。
视图:
ThinkPHP视图包含View视图和模板文件两部分。
视图类负责Action控制器类和模板文件之间沟通,Action类把数据通过View类传递到模板文件,而模板文件把接收到的数据转换成相应的数据格式显示。
如果模板文件使用了某些模板引擎例如Smarty、ThinkPHPTemplate等,进行标签定义,而非使用原生的PHP语法,那么在模板输出的过程中还需要引入模板解析。
如果开启ThinkPHP缓存功能,则ThinkPHP将生成一个编译后的模板缓存文件,就不再需要在每次输出模板的过程中都进行解析操作,提高非实时页面访问效率。
控制器:
ThinkPHP控制器就是模块类,通常位于项目的LibAction目录下面。
类名就是模块名加上Action后缀。
制器类必须继承系统的Action基础类,这样才能确保使用Action类内置的方法。
本文采用ThinkPHP系统的默认项目映射方法,例如当我们访问URL:
/myApp/index.php/Index/index/时,ThinkPHP将访问IndexAction中的index方法。
Action基础类包含已始初始化的View类变量,当调用View时直接调用该变量进行传值操作。
ThinkPHP提供的快速A方法用于快速定位并创建相应Action。
4.1.2系统总体物理结构
拥有不同权限的系统管理员、用户通过Internet连接到微博系统的Web服务器,Web服务器受外部防火墙保护,数据库服务器为Web服务器提供数据库支持,其受到内部防火墙的保护。
微博系统的系统网络拓扑图如下图4-1所示:
图41微博系统网络拓扑图
4.2详细设计
4.2.1公共模块设计
公共模块定义和实现各个模块公共使用到的全局变量和函数,这样大大节约了编程时间及编程量,也为后期维护带来很大方便。
公共模块主要存放在目录/Common下的common.php文件中,包含字符串处理和过滤函数、获取用户信息函数、处理时间函数、处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ThinkPHP 系统 设计 实现