路由器 安装php,PHP DIY系列之自定义配置和路由

c5de1c08777ed896754214153b119165.png

我们已经开发完成,但我们还需要更多。比如自定义配置和路由。

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);

...省略代码

保存后打开浏览器看看效果:

114d7e747175b33dd58c1938f0f6e2da.png

a6e794b9d921a2636b5e6a69d7cd410d.png

这里虽然有自定义路由,但是我们有时候需要禁止默认路由,所以我们不妨增加配置参数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

)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值