演艺圈悲惨事件_一个简单的PHP模板引擎

作者: seo 分类: 黑帽seo 发布时间: 2019-07-03 05:55

  PHP早期开发中通常是PHP代码和HTML代码混写,这也使代码中充斥着数据库操作,逻辑处理等。当项目不大时,这样的代码还可以接受,但是随着项目不断扩大,我们就会发现同一个文件中同时存在前端逻辑和后端处理,当逻辑越来越复杂时,代码的可读性和可维护性都会变得非常差,以至于后来不得不进行大规模的代码重构。所以后来就出现了代码分层的思想,尽量拆分开前端代码和后端代码。

  PHP模板引擎能解决这种混乱吗?当然可以。但是呢,即使你不用专门的模板引擎也可以写出逻辑清晰的代码,重点是要有分层的思想,有专门的脚本去进行数据获取,数据处理,逻辑处理等,在展示页面只进行尽可能简单的逻辑处理即可。既然这样,那还有使用PHP模板引擎的必要吗?毫无疑问当然有,因为模板引擎的功能不仅于此。

  1、它实现了一些自定义标签,用于展示层的简单逻辑处理,相较于不适用引擎的好处是代码看起来不像是PHP代码了,感觉上HTML代码和PHP代码完全分开了,但这只是假象,坏处是效率降低了,因为这样的页面需要专门的脚本解析后才能正确显示,解析的方法就是使用正则表达式替换,这明显降低了效率。到现在来看感觉PHP模板引擎有还不如没有呢,那为什么还要用它呢,重点是他的下一个功能。

  2、文件缓存,这是模板引擎在生产环境中提高效率的非常好的手段。可以用在页面加载时所用数据量很大但不经常变或者不需要实时更新,即使延迟一会也无妨的页面。我个人感觉文件缓存是PHP模板引擎的最重要的部分。

  首先我们先要计划好我们的所需要的基础类,有Template类和Compile类。

  从上边的代码中我们能发现对于模板文件不存在和编译文件不存在处理方式不同,这也很容易理解,如果你连模板文件都没有有啥好编译的,但是你有模板文件没编译文件这也很正常,正常进行编译即可。

  如上所示,我们首先想好了这个模板引擎需要什么配置,还有一些设置配置的方法和检查配置的方法等,而我们的核心方法show()还没有实现呢,先不着急,我们先去写编译类Compile,如下所示:

  从上面Compile类的构造函数我们可以看出,他需要模板文件路径,编译文件路径,和具体编译时的配置参数,但是在这这个配置参数吗,没有用到。之前说过模板引擎主要使用的正则表达式来进行匹配替换,将模板文件编译成能正确执行的PHP文件,这里使用数组存放正则匹配数组和替换数组来进行整体替换。

  正如我们看到的,上边的那个是正则匹配,下边的是替换。但是我们没有给编译类的value变量赋值,那这个替换能找到正确的值吗?答案是能,因为他用的不是这个类的value用的是模板类的value,接下来一会会讲到。

  这里用到的主要正则表达式的知识有:元组、反向引用等,这些只要稍微看一下正则表达式基础就能理解了。

  现在我们已经能编译一些标签了我们就再转回模板类,现在我们想一想要怎么展示呢,这个才是我们的根本目的。写代码之前先理一下思路:

  2、判断是否需要更新缓存(判断方式主要是缓存时间和编译文件和模板文件的修改时间的关系),如果是就进行第三步,否则直接读取缓存文件输出。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!