Heim > Artikel > Backend-Entwicklung > PHP-DIY-Serie zur benutzerdefinierten Konfiguration und Weiterleitung
Wir haben es entwickelt, aber wir brauchen mehr. Zum Beispiel benutzerdefinierte Konfiguration und Routing.
Erstellen Sie eine neue im App-OrdnerConfig.php
<?php/** *自定义配置 */return [ 'debug' => false, 'route' => [ '' => 'demo/welcome', 'test' => 'demo/test', ],];
Erstellen Sie eine neue DemoController
(im Verzeichnis 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); }}
Ändern Sie die Eintragsdatei index.php und ladenden Konfigurationscode hinzufügen:
... 省略代码 // 加载配置 $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); ...省略代码
Der Parsing-Routing-Teil fügt auch eine benutzerdefinierte Routing-Verarbeitung hinzu:
// 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); ...省略代码
Öffnen Sie nach dem Speichern den Browser, um den Effekt zu sehen:
Obwohl es hier benutzerdefinierte Routen gibt, müssen wir manchmal die Standardroute deaktivieren, daher können wir genauso gut den Konfigurationsparameter defaultRoute hinzufügen, um zu steuern, ob dies der Fall ist Aktivieren Sie die Standardroute.
Ändern wir den Routenparsing-Code:
//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); } ...省略代码
Fügen Sie in der Konfiguration unter der App Folgendes hinzu:
return [ 'debug' => false, 'route' => [ '' => 'demo/welcome', 'test' => 'demo/test', ], 'defaultRoute' => false,];
Wir öffnen den Browser und geben saif.com/login
Array ( [line] => 137 [msg] => route not found:login [code] => 404 [file] => library/Https/Request.php )
Verwandte Lernempfehlungen:
Das obige ist der detaillierte Inhalt vonPHP-DIY-Serie zur benutzerdefinierten Konfiguration und Weiterleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!