cms系统模板引擎设计,php.docxVIP

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

cms系统模板引擎设计,php   篇一:CMS系统模板引擎设计(4):Parameter类设计   紧接上回,说到Parameter和Field了。 在Label初始化的时候,同时也要对ParameterCollection和FiledCollection初始化。在上节有个属性是这样写的ArticleId=Url(articleid),意思是ArticleId 的值是url的query里的articleid的参数的值。而且还有个 DateFormat=yyyy年MM月dd日。所以可以看出Parameter的多样化,我个人认为Parameter是最难设计的!以至于我现在写博文都心虚,我之前的系统里对Parameter处理的也比较糟糕,有不少hardcode。   我们说下Parameter的麻烦之处: 1、我们具体Label(Article的List)需要获取Parameter的值,有int string bool等,所以Parameter需要把本身的value可转成任意基础类型   2、有的Parameter的value不是具体值,而是一个方法调用,我们需要反射这个方法,这个方法存在哪里?Core还是具体的某个模块(比如文章)实现的   3、像Format之类的Parameter显然是用来处理“后事”的,他不会用到前期取值,而是得到后的format工作,也就是需要传一个未知的值。   4、如何做到Label也可以用,Field也可以用。前者主要用做参数,后者主要用来format。当然,前者有时也format。   带着这几个问题,我们想想Parameter应该有什么样的内容?   ///   /// Label参数类   ///   public class Parameter   {   ///   /// 参数名   ///   public string Name { get; set; }   ///   /// 参数初始值   ///   public string Value { get; set; }   public Parameter() { }   public Parameter(string name, string value)   {   Name = name;   Value = value;   }   ///   /// 获取参数最终值(默认为初始值)   ///   ///   ///   public virtual string GetValue(params string[] parameters){   return Value;   }   }   这是Parameter基类,那么Url等特殊的参数我设计成了子类!   public class Url : Parameter   {   public override string GetValue(params string[] parameters){   return ().((), Name);   }   }   public class Format : Parameter   {   public override string GetValue(params string[] parameters){   if (parameters == null) return ;   var val = parameters[0];   return (@me, val);   }   }   public class DateFormat : Parameter   {   public override string GetValue(params string[] parameters){   if (parameters == null) return ;   DateTime t;   if ((parameters[0], out t))   {   return (Value);   }   return parameters[0];   }   }   呵呵,GetValue貌似不是很漂亮,但确实解决了传值不定的情况。那我们如何实例化ParameterCollection的呢?(其实就是看怎么实例化这些Parameter的)   ///   /// Parameter集合   ///   public cla

文档评论(0)

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

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

1亿VIP精品文档

相关文档