博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实习日志(三)
阅读量:7023 次
发布时间:2019-06-28

本文共 2317 字,大约阅读时间需要 7 分钟。

hot3.png

首先,说一点个人经验,再谈谈其它的对代码的理解或是其他什么:

  1. 这套系统是一套功能齐全、非常好用的便于快捷开发的系统,因为非常值得学习(一位大神推荐的,其他几位大神也有同感,我是菜鸟),先说说我们应该怎么理解这套系统吧:a.首先,看系统后台管理使用文档(附链接:);b.其次,看架构分析文档(附链接:);如果你觉得以上的差不多了,看到这里,我相信你对系统的运行机制等等也开始有一定的了解;c.然后,看软件文档;(附加链接:),看如何实现模板、模型的添加;至此,你对全台的一次操作应该都有些了解了;d,最后,如果你想了几后台代码的话:看看“软件文档的基本语法()和标签说明()”,至此;你可以开始看 后台代码了(小小建议:了解过程的话最好多大“断点”,逐过程或逐语句运行。)

  2. 研究这套cms很重要的一个文件是:urls.config;它直接规定了页面的模板页、后台管理页(要继承页面),页面类型和url重写(url重写,看的真蛋疼,欺骗了我多少回,使代码难度大大加大了);

  3. 有大神说,只有站在巨人的肩膀上才看的更加高远;当我开始研究DTcms的源码时,我才对这句话有了深刻的理解,首先看看下面的我觉得很牛B的代码,我费了好久好久才弄懂的!:

    方法:

            protected string linkurl(string _key, params object[] _params)

            {
                Hashtable ht = new BLL.url_rewrite().GetList();
                Model.url_rewrite model = ht[_key] as Model.url_rewrite;
                if (model == null)
                {
                    return "";
                }
                try
                {
                    string _result = string.Empty;
                    string _rewriteurl = string.Format(model.path, _params);
                    switch (config.staticstatus)
                    {
                        case 1: //URL重写
                            _result = config.webpath + _rewriteurl;
                            break;
                        case 2: //全静态
                            _rewriteurl = _rewriteurl.Substring(0, _rewriteurl.LastIndexOf(".") + 1);
                            _result = config.webpath + DTKeys.DIRECTORY_REWRITE_HTML + "/" + _rewriteurl + config.staticextension;
                            break;
                        default: //不开启
                            string _originalurl = model.page;
                            if (!string.IsNullOrEmpty(model.querystring))
                            {
                                _originalurl = model.page + "?" + Regex.Replace(_rewriteurl, model.pattern, model.querystring, RegexOptions.None | RegexOptions.IgnoreCase);
                            }
                            _result = config.webpath + _originalurl;
                            break;
                    }
                    return _result;
                }
                catch
                {
                    return "";
                }
            }

调用: <div class="nav">

  <ul>
   <li><a href="<%linkurl("index","")%>">首 页</a></li>
   <li><a href="<%linkurl("article_list","")%>">新闻资讯</a></li>
   <li><a href="<%linkurl("goods_list","")%>">商品展示</a></li>
   <li><a href="<%linkurl("photo_list","")%>">图片分享</a></li>
   <li><a href="<%linkurl("down_list","")%>">资源下载</a></li>
   <li><a href="<%linkurl("feedback","")%>">在线留言</a></li>
   <li><a href="<%linkurl("content","about")%>">关于我们</a></li>
   <li><a href="<%linkurl("content","contact")%>">联系我们</a></li>
  </ul>
 </div>

注释:这段牛B的代码就是(其实就是对应了url.config文件):首先以哈希表获取url.config配置文件中的所有信息,然后以Key(对应配置文件中的name属性)来筛选,获取某一条,并将它转化为一个url_rewrite实体(这个太TMD的牛B了!!!!!);如果获取为非空的话,使用format方法来拼写从定向路径,并返回。(我花了好久好久才懂的啊,这个代码真是太牛B了);

碰到的难点问题:

  1. 正则表达式不过关,很多涉及到这个的不理解;

  2. url重写,还不熟;

以上两个方面让我很吃亏!!!!!

 

备注:这套系统的url重写很厉害,用的很多,不要轻易相信其他的跳转地址,对理解代码很不利。

 

最后发表一下感慨吧:研究这套系统的源代码,颠覆了我之前的所学!

转载于:https://my.oschina.net/u/1771585/blog/288131

你可能感兴趣的文章
Lintcode: Partition Array
查看>>
Fiddler_解决Fiddler查看Post参数中文乱码的问题
查看>>
让小区运营再智能一点,EasyRadius正式向WayOs用户提供到期弹出式提示充值页面...
查看>>
sudo 之后 unable to resolve host的问题解决办法
查看>>
C++ VC实现对话框窗口任意分割
查看>>
利用模拟退火提高Kmeans的聚类精度
查看>>
[转载]typedef struct和struct的区别
查看>>
poj_2352 Treap
查看>>
TDBXCommand TDBXReader
查看>>
mysql导出查询结果到文档
查看>>
记录-UEFI启动的预装WIN8的笔记本里引导linux双系统
查看>>
SQL Server 性能优化3 该指数(Index)保养
查看>>
WorldWind源码剖析系列:BMNG类构造函数深入分析
查看>>
Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
查看>>
那些PHP中没有全称的简写
查看>>
【elasticsearch】python下的使用
查看>>
Swift3.0语言教程使用指针创建和初始化字符串
查看>>
iphone删除自动更新的系统
查看>>
Image Base64 Datasnap Image delphi与c#互相兼容识别
查看>>
python字符串和编码
查看>>