FastTpl – 轻量级模板解析引擎

〇、前言

在PHP开发者当中,流行的Smarty模板引擎已是无人不知,它的功能丰富强大,出现的时机也恰到好处。

但是为什么我还需要开发这么一个模板引擎呢,初衷有三:

1、我不需要太复杂的模板设计,需要的是简单易学,团队成员能够快速入手,并且易于维护的模板引擎;

2、Smarty虽然功能丰富,但过于臃肿,执行效率低,我需要轻量级的模板引擎,它需要执行起来特别高效;

3、我需要前端和后端的技术都能够使用,因此它既需要有自己的模板标签,同时也支持原生的PHP文件作为模板;

一、关于MVC设计模式,及前后端分工

模板引擎与MVC开发模式有分不开的关系,但是在我的职业生涯中,经常见到有开发者不能清晰地区分C和V之间的关系,也不能很好地将内容展示与业务逻辑区分开来,这样的结果就是,在模板中混杂有业务逻辑的代码或者函数/方法调用。这样的行为造成的后果便是前后端协作效率的降低,及项目后期维护难度的提高。

因此,这里需要强调的是,模板的作用仅是作为内容展示使用,不能包含任何业务逻辑的成分。

极端的做法便是,前后端在模板渲染上的协作,仅仅是后端通过模板引擎赋值几个变量在模板上进行展示而已

二、模板引擎的三种模板方式

1、PHP文件模式

FastTpl支持PHP文件模板的模式,在这种模式下,模板引擎将把模板文件当做PHP文件处理,因此模板引擎不会生成中间的解析代码,模板引擎的执行效率将会更加高效。

这样的好处便是在某些项目中,特别是对前端要求不高,或者前后端开发为同一开发人员的时候(如后台管理页面),可以简化模板的开发流程,提高页面的开发效率。

但这样做的缺点也是显而易见的,你无法保证项目清晰的MVC模式,因为模板的编写权限更高、自由度更大、灵活度更多,你无法抑制住程序员的发挥空间。

所以如果要在这种模式下保证项目的架构模式,对于后端开发人员的要求较高。

2、混合标签模式

如何在模板中使用混合的标签模式呢?在模板引擎配置支持的情况下,直接在模板中使用闭合的PHP标签即可:

这种模式的灵活度更高,当然缺点也是和PHP文件模式一样的,并且,过多的PHP代码会造成模板文件的混乱,甚至造成模板文件中产生结构混乱(如模板文件中出现业务逻辑代码,底层数据操作等等)。

所以,以上两种方式我也不是特别推荐,我推荐的是使用模板引擎自带的标签进行模板开发。

3、模板标签模式

FastTpl仅有7个模板标签,只有1个核心类,并且支持模板缓存功能,支持编写模板插件。

3.1、FastTpl模板标签

模板标签存在的目的是为解决前后端分工,隔离业务逻辑与视图展示,提升团队协作效率。

1)、foreach

2)、for

3)、if…elseif…else

  • 4)、变量显示

5)、变量赋值

6)、模板加载

注:include 的参数可以接变量,以便控制不同的模板加载。

7)、注释

支持单行和多行注释。 

3.2、模板引擎插件

FastTpl支持插件,默认的自带插件存放在/_frm/core/component/FastTpl/plugin目录,编写请参考自带插件类文件。

由于FastTpl也支持PHP代码混合,其实用插件的地方也可以通过PHP代码来实现,但是过多的PHP代码混合会使模板文件混乱。

插件存在的目的除了提高模板的灵活性,模板的编写也更加安全,模板代码更加简洁,前后端分工也更加清晰。

插件编写好以后以便模板引擎自动加载,需要调用以下方法进行注册:

插件在模板中是以下划线+大写字母开头的类对象调用的形式进行使用,例如原生的String插件调用方式如下:

三、模板引擎的配置及使用

上面我们已经介绍了FastTpl模板引擎,接下来我们来看看如何配置FastTpl。

1、FastTpl的配置

FastTpl的配置很简单,以下是默认配置:

如果需要更改配置可以调用以下方法修改配置来实现(例如使用PHP文件模板方式):

 2、FastTpl的使用

FastTpl提供了多个对外调用的API,具体可参考Lge框架封装FastTpl的Template文件

FastTpl是属于Lge轻量级开发框架的核心组件之一,因此,如果需要使用FastTpl,有两种方式供选择。

1)、在Lge中使用FastTpl

这种方式很简单,在继承于框架控制器基类的任意控制器中调用display方法即可,例如:

2)、不在Lge中使用FastTpl

这个时候我们将Lge作为一个独立类库使用,因此,首先需要引入Lge框架,只需要包含框架的phar文件即可。

引入框架之后我们即可使用框架的所有功能,当然也包含FastTpl,让我们来试一下。

这是我们的测试文件 test.php (我们使用PHP模板模式):

这个是我们的模板文件 login.php :

文件目录如下:

 

运行test.php之后,您将会在界面上看到效果:

 

恭喜您,已经掌握了FastTpl的精髓了! 

 

 

 

 

 

Leave a Reply

Your email address will not be published.