完成切片的编写后,我们需要对创建的切片进行路由绑定。否则切片永远不会生效。将程序定位到根目录\Slice\registerSlice.php文件并用编辑器打开。在本文件中,大概32行起(必须在本文件中 use \Core\Slice\InitSlice as InitSlice;后一行进行路由绑定),编写路由绑定事件。
registerSlice.php文件中已经编写了完整的使用注释。在这里我直接引入该文本的内容:
InitSlice::any/get()/post()/put()/delete()
程序提供五个方法声明切片绑定的请求类型: any, get, post, put, delete 。依次为:所有请求类型,GET请求,POST请求,PUT请求,DELETE请求。具体参考《RESTful》
参数说明备注绑定路由规则 绑定控制器路由规则。为空则对全局控制器路由生效。
不为空,则依次填写 组-模型-方法。 填写组,则绑定组路由下所有方法。如此类推 参数可以为字符串或者数组绑定的切片 切片的命名空间。相对于当前Slice目录。不需要填写空间名Slice,如:\Slice\Common\Auto,则填写\Common\Auto
注:切片是按照由上至下的顺序进行注册。 参数必须为数组不触发切片运行的路由规则 不参与绑定的路由规则。和参数一一样。可以不填写 参数可以为字符串或者数组
示例代码:
- <?php
- use \Core\Slice\InitSlice as InitSlice;
- InitSlice::any(['Home', 'Home-Index'], ['\Common\Authenticate']); //路由Home, Home-index 绑定 \Common\Authenticate
- InitSlice::any('Admin-Setting-index', ['\Common\Authenticate']); //路由Admin-Setting-index 绑定\Common\Authenticate
- InitSlice::any('Admin', ['\Admin\Login'], ['Admin-Login']); //路由Admin 绑定\Admin\Login 但Admin-login不会被绑定
路由陷阱
切片虽好,可容易出现陷阱。为什么这么说呢?如:我某一切片绑定的路由为User。而在其他分组的情况下,若也存在User控制器,那么切片将会连同触发。如:Home-User、Admin-User……因此,在复杂的项目结构中,切片的绑定尽量最得明确点,避免因为松散的规则导致路由陷阱的产生。