切片

创建于 2022-07-25 / 最近更新于 2022-12-11 / 1338
字体: [默认] [大] [更大]

切片介绍

PESCMS系列软件都拥有切片功能。切片在使用上和控制器无异,您在阅读本页前,最好先掌握了控制器的各个方法。

切片提供了before和after方法。

  • before方法在控制器运行前触发。
  • after方法在控制器渲染模板前触发 或者在执行success()方法前触发。
    例子:基于这种特性,我们可以将权限校验放在before方法。控制器就不需要全都继承一个common控制器了。

新建切片

所有切片均需要创建在Slice目录。例如我们创建一个PESCMS DOC登录验证的切片。\Slice\Login.php 并填入如下代码:

<?php
/**
 * 版权所有 2022 PESCMS (https://www.pescms.com)
 * 完整版权和软件许可协议请阅读源码根目录下的LICENSE文件。
 *
 * For the full copyright and license information, please view
 * the file LICENSE that was distributed with this source code.
 */

namespace Slice;

class Login extends \\Core\\Slice\\Slice{

    public function before() {
    }

    public function after() {
    }


}

?>

绑定路由

完成切片创建后,我们需要对切片完成路由绑定。打开\Slice\registerSlice.php文件,根据需求绑定路由。例如上面示例中的登录验证,输入如下代码:

<?php

use \\Core\\Slice\\InitSlice as InitSlice;

InitSlice::any([“Doc-:m-:a”, “Create-:m-:a”], [“\Login”]);

?>

现在我们就完成了绑定路由操作。可以修改\Slice\Login中的before方法,随便输入一点东西。

public function before() {
    echo “Hello World”;
}

现在打开DOC系统,页面最上方会打印出Hello World字眼。

InitSlice

InitSlice分别有5个方法,他们对应如下表:

方法名称 作用
any 所有请求类型
get 仅限GET请求
post 仅限GET请求
put 仅限GET请求
delete 仅限GET请求

用法

InitSlice::any($route, $slice)

InitSlice::get($route, $slice)

InitSlice::post($route, $slice, $exclude)

InitSlice::put(..., ..., ...)
InitSlice::delete(..., ..., ...)

上述用法中,他们的参数如下表说明:

参数 是否必填 参数类型 说明
$route string或array 绑定(触发)的路由地址
$slice array 本次指向的切片
$exclude string或array 被排除的路由地址

范围绑定

在绑定路由器过程,$route$exclude 可以设置范围绑定。

关键词::g-:m-:a ,他们对应的为 组-控制器-方法 。如:Create-:m-:a 泛匹配组Create下任意的控制器以及方法。

您可以根据自身需求填写准确的路由,还是模糊匹配。

4 人点赞过