PHP DIY系列之自定义配置和路由
发布:smiling 来源: PHP粉丝网 添加日期:2022-07-05 07:26:40 浏览: 评论:0
我们已经开发完成,但我们还需要更多。比如自定义配置和路由。
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
- )
Tags: PHP自定义配置 PHP路由
- 上一篇:教你用php将二维码和文字结合到一个背景图片上!
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)