什么是切片
切片是PESCMS2.6新引入的特征功能。切片分前切片和后切片,且基于路由绑定实现。切片可以这样理解:基于路由绑定的,前置加强和后置加强。
在2.5版本及之前,我们要实现一个公用方法都需要在组级控制器中创建公用控制器。再基于公用控制器的构造函数实现公用方法产出或调用。这么一来,容易产生一个问题:若某公用方法属于跨组形式公用,那么岂不是要在两个组的控制器再创建一层公用控制器?于是乎,PESCMS引入了全新的切片功能。
切片是基于路由绑定实现,因此适用性非常强!而且切片分前后切片!
前切片特点
前切片永远在控制器执行前运行。因此可以利用前切片实现以下常见功能:
权限验证
登录验证
后切片特点
后切片顾名思义,就是最后才执行的行为。后切片除了最后执行之外,他在控制器中有如下特性:
若当前控制器有视图操作。那么后切片将在视图渲染之前执行对应的后切方法。
若当前控制器没有试图操作,那么后切片将在控制器脚本运行完毕后再执行对应后切的方法。
新建切片
在程序根目录的Slice目录中创建任意文件。如 \Slice\Login.class.php 。在新建的文件键入如下代码
- <?php
- /**
- * PESCMS for PHP 5.4+
- *
- * Copyright (c) 2014 PESCMS (http://www.pescms.com)
- *
- * For the full copyright and license information, please view
- * the file LICENSE.md that was distributed with this source code.
- * @core version 2.6
- * @version 1.0
- */
- namespace Slice; //命名空间
- /**
- * 登录验证切片
- */
- class Login extends \Core\Slice\Slice{
- public function before() {
- //执行前切片的登录认证的代码,此处省略
- }
- public function after() {
- }
- }
每一个切片都必须继承\Core\Slice\Slice!而切片可以调用控制器中的方法。因为\Core\Slice\Slice也同时继承了\Core\Controller\Controller 。因此,我们可以讲切片的任何数据赋值给模板调用,也可以直接声明调用视图!