切片
创建于 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 人点赞过