2014年8月19日 18:12:16
smarty使用了2年,使用PHP本身做模版引擎也有4个多月了,最终还是在我的这个框架中抛弃了smarty,转用原生的PHP代码做模版引擎,并简单写了一个视图类,还没有实现缓存功能
视图类文件在libs/view.php
控制器中的使用方法(代码在current_module/controller/xxx.php):
1 class _index extends Main 2 { 3 public function initc() 4 { 5 $this->starttpl = array('header', 'sider'); 6 $this->endtpl = array('footer'); 7 } 8 9 public function index() 10 { 11 $this->view->a = 111; 12 $this->view->b = 222; 13 $this->view->c = 333; 14 $this->show('test'); 15 } 16 }
效果是: 依次显示 header.php -> sider.php -> test.php -> footer.php, 并将其中用到的变量$a,$b,$c赋值;
3行: 该函数是默认执行的函数,凡是进入该_index控制器的请求都会执行这个方法,该方法定义了默认显示的模版文件名,框架会在默认的路径下找到他们,并依次显示
11~13行: 给视图模版中使用到的变量赋值,由于PHP语法的灵活,给对象的变量赋值时,这些变量不必要事先存在,赋值后可以通过 get_object_vars();获取这些临时定义的变量;
14行: 显示模版test.php,因为第3行的代码,所以实际上会依次显示模版: header.php -> sider.php -> test.php -> footer.php
模版中使用变量(模版放在current_module/views/current_controller/test.php):
<?= $a, $b, $c ?>
模版中完全使用PHP的语法规则,不像smarty中又定义了一套语法规则