什么是切片

切片是PESCMS2.6新引入的特征功能。切片分前切片和后切片,且基于路由绑定实现。切片可以这样理解:基于路由绑定的,前置加强和后置加强。

在2.5版本及之前,我们要实现一个公用方法都需要在组级控制器中创建公用控制器。再基于公用控制器的构造函数实现公用方法产出或调用。这么一来,容易产生一个问题:若某公用方法属于跨组形式公用,那么岂不是要在两个组的控制器再创建一层公用控制器?于是乎,PESCMS引入了全新的切片功能。

切片是基于路由绑定实现,因此适用性非常强!而且切片分前后切片!

前切片特点

前切片永远在控制器执行前运行。因此可以利用前切片实现以下常见功能:

  • 权限验证

  • 登录验证

后切片特点

后切片顾名思义,就是最后才执行的行为。后切片除了最后执行之外,他在控制器中有如下特性:

  • 若当前控制器有视图操作。那么后切片将在视图渲染之前执行对应的后切方法。

  • 若当前控制器没有试图操作,那么后切片将在控制器脚本运行完毕后再执行对应后切的方法。

新建切片

在程序根目录的Slice目录中创建任意文件。如 \Slice\Login.class.php 。在新建的文件键入如下代码

  1. <?php
  2. /**
  3. * PESCMS for PHP 5.4+
  4. *
  5. * Copyright (c) 2014 PESCMS (http://www.pescms.com)
  6. *
  7. * For the full copyright and license information, please view
  8. * the file LICENSE.md that was distributed with this source code.
  9. * @core version 2.6
  10. * @version 1.0
  11. */
  12.  
  13.  
  14. namespace Slice; //命名空间
  15.  
  16. /**
  17. * 登录验证切片
  18. */
  19. class Login extends \Core\Slice\Slice{
  20.  
  21. public function before() {
  22. //执行前切片的登录认证的代码,此处省略
  23. }
  24.  
  25. public function after() {
  26. }
  27.  
  28.  
  29. }

每一个切片都必须继承\Core\Slice\Slice!而切片可以调用控制器中的方法。因为\Core\Slice\Slice也同时继承了\Core\Controller\Controller 。因此,我们可以讲切片的任何数据赋值给模板调用,也可以直接声明调用视图!