PHP DIY系列之自定义配置和路由
导读:收集整理的这篇文章主要介绍了PHP DIY系列之自定义配置和路由,觉得挺不错的,现在分享给大家,也给大家做个参考。我们已经开发完成,但我们还需要更多。比如自定义配置和路由。app文件夹下新建config.php<?php/** *自定...
收集整理的这篇文章主要介绍了PHP DIY系列之自定义配置和路由,觉得挺不错的,现在分享给大家,也给大家做个参考。我们已经开发完成,但我们还需要更多。比如自定义配置和路由。
app文件夹下新建config.php
?php/** *自定义配置 */return [ 'debug' =>
false, 'route' =>
[ '' =>
'demo/welcome', 'test' =>
'demo/test', ],];
新建DemoController(app/Https/Controllers目录下)
?php/** * Demo控制器 */namespace App\Https\Controllers;
use Library\Https\Controller;
class DemoController extends Controller{
public function welcome($params) {
return $this->
response->
json(['hello' =>
'welcome']);
}
public function test($params) {
return $this->
response->
json($params);
}
}
修改入口文件index.php,加入加载配置代码:
... 省略代码// 加载配置$config = require SF_LIBRARY_PATH.'Config.php';
$appConfig = file_exists($appConfigPath = SF_APP_PATH.'Config.php') ? require $appConfigPath : [];
$config = array_merge($config, $appConfig);
$config['debug'] = ($config['debug']?? SF_DEBUG);
...省略代码解析路由部分也加入自定义路由处理:
// Application...省略代码public function handleRequest(Request $request){
$route = $request->
resolve($this->
_config['route']??[]);
$response = $request->
runAction($route);
/** * 执行结果赋值给$response->
data,并返回给response对象 */ if ($response instanceof Response) {
return $response;
}
throw new SaiException('Content format error');
}
...省略代码 public function resolve($route=[]) {
$this->
route = $route;
// 自定义路由 return $this->
getPathUrl();
}
// Request ...省略代码public function runAction($route){
if (array_key_exists($route, $this->
_route)) {
$route = $this->
_route[$route];
}
$match = explode('/', $route);
$match = array_filter($match);
...省略代码保存后打开浏览器看看效果:
这里虽然有自定义路由,但是我们有时候需要禁止默认路由,所以我们不妨增加配置参数defaultRoute,用来控制是否开启默认路由。
我们修改一下路由解析的代码:
//Application...省略代码public function handleRequest(Request $request){
$route = $request->
resolve($this->
_config['route']??[]);
$response = $request->
runAction($route, $this->
_config['defaultRoute']??true);
/** * 执行结果赋值给$response->
data,并返回给response对象 */ if ($response instanceof Response) {
return $response;
}
throw new SaiException('Content format error');
}
...省略代码...省略代码public function runAction($route, $defaultRoute){
if (array_key_exists($route, $this->
_route)) {
$route = $this->
_route[$route];
}
elseif (!$defaultRoute) {
throw new NotFoundException("route not found:".$route);
}
...省略代码我们在app下面的Config,加入:
return [ 'debug' =>
false, 'route' =>
[ '' =>
'demo/welcome', 'test' =>
'demo/test', ], 'defaultRoute' =>
false,];
我们打开浏览器输入saif.COM/login
报错如下:
Array( [line] =>
137 [msg] =>
route not found:LOGin [code] =>
404 [file] =>
library/Https/Request.php)相关学习推荐:@R_126_1386@从入门到精通
以上就是PHP DIY系列之自定义配置和路由的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PHP DIY系列之自定义配置和路由
本文地址: https://pptw.com/jishu/596512.html
