网站大量收购闲置独家精品文档,联系QQ:2885784924

从DB到C看dz2.5的变革--Discuz! X2.5二次开发关于数据库访问的变化.docVIP

从DB到C看dz2.5的变革--Discuz! X2.5二次开发关于数据库访问的变化.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从DB到C看dz2.5的变革--Discuz! X2.5二次开发关于数据库访问的变化

从DB到C看dz2.5的变革--Discuz! X2.5二次开发关于数据库访问的变化 前言:本文对普通的dz使用用户或者站长帮助不大,因为这部分朋友只需要关注功能上面的变化,无需知道底层代码结构的事情,请忽略跳过。 如果是已经或者想要对dz进行二次开发或者组件开发的朋友们应该有所体会,不妨共同探讨一下这次2.5带来的变化。 dz出来2.5版本之后,一直没时间去升级,好像也没有看到哪里有关于这次升级所带来变化的详细介绍。 这两天终于抽出时间去升级了,因为我对dz做了一些二次开发,所以不会像普通用户那样简单的覆盖,所以做了一次代码比对。发现这次升级底层代码的写法确实有了很大的变化,或者说更像OOP了,在架构上更接近4层的MVC了。 其中对大的变化就是在架构中增加了一层,也就是所谓的DAO层。也许单纯PHP开发的朋友,对DAO或者所谓的OOP之类的词语比较陌生。估计对MVC之类的会熟悉一些。 MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)。MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。(本描述来自百度) 目前MVC架构不管是在哪个技术体系都是非常流行的。例如java的SSH(Struts + Spring + Hibernate),.NET的ASPNET MVC Framework,PHP的Zend framework等框架都被广泛应用。随着技术的日益成熟,MVC架构已经不再是表面上的3层结构了,在模型(model)层都会被细分,最常见的是分为Service层和DAO层。(其实DAO层下面还有一个数据库连接层,这一层是与数据打交道的,在java体系里面一般使用Hibernate来实现) 而在dz里面,同样使用了MVC架构。 View层:用于给用户展示以及与用户交换的部分,一般来说指的是html展示部分。dz使用了模板引擎来实现,也就是代码里面的template方法。具体可以参考function_core.php文件里面的template方法。 Controller层:一般是负责具体的业务模块流程的控制,相当于一个摆渡的作用。在dz里面就是根目录的那些文件。如index.php,home.php,forum.php等文件,他们都没有实际的业务逻辑,仅仅是用来控制流程。说白了就是通过它知道你发出的请求应该调用哪个类或者哪个方法来进行处理。 Service层:主要负责业务模块的逻辑应用的,也就是具体要进行操作的一些业务逻辑处理。在dz里面就是/source/module/里面的文件。当然,根据业务逻辑的复杂程度,不仅限于这个目录里面的方法,dz还根据实际的需要和功能抽象出class、include、language等公用或者特殊的类和方法。 DAO层:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。一般来说DAO层的类相当于一个实体对象,与数据库表一一对应的。在dz里面就是/source/class/table里面的文件,应该是与数据库表一一对应的(具体没有详细对应去看)。在调用的时候,使用C::t(对象名称)来调用获得DAO对象,例如C::t(common_member),则可以获得common_member的DAO对象,而该对象对应的方法则可在table_common_member.php里面进行定义。以前的版本是没有这一层的,是直接通过DB::query等数据库操作直接查询数据的,有了DAO层,在业务逻辑操作的时候更加体验了面向对象的思想。如果对dz进行的二次开发的朋友,肯定已经发现了这个变化,在业务逻辑代码里面,所有的DB::XXX的方式都换成了C::XXX。当然,dz还是保留DB::XXX等方法的使用,不过对于二次开发的话,不建议直接使用DB::XXX而是调用C::XXX。 但是这个版本的仍有美中不足的地方。虽然实现了DAO层来实现面向对象的手段,但是并没有吸收到DAO层的精华所在。因为我发现所有的table类竟然是独立的,很多公用的方法例如fetch_by_uid,fetch_all_by_uid等等,都没抽取出来放到父类里面去。所以导致很多重复的代码,而且table类也因此变得很局限,对于二次开发扩展来说,不太有利。当然,官方自己开发的话不会存在局限一说,毕竟需要什么方法自己添就是了,只是会出现很多重复代码而已。

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档