PHP-DIY-Serie zur benutzerdefinierten Konfiguration und Weiterleitung

coldplay.xixi
Freigeben: 2023-04-09 07:04:02
nach vorne
2866 Leute haben es durchsucht

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 [
    &#39;debug&#39; => false,
    &#39;route&#39; => [
        &#39;&#39; => &#39;demo/welcome&#39;,
        &#39;test&#39; => &#39;demo/test&#39;,
    ],];
Nach dem Login kopieren

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([&#39;hello&#39; => &#39;welcome&#39;]);
    }

    public function test($params)
    {
        return $this->response->json($params);
    }}
Nach dem Login kopieren

Ändern Sie die Eintragsdatei index.php und ladenden Konfigurationscode hinzufügen:

... 省略代码
// 加载配置
$config = require SF_LIBRARY_PATH.&#39;Config.php&#39;;
$appConfig = file_exists($appConfigPath = SF_APP_PATH.&#39;Config.php&#39;) ? require $appConfigPath : [];
$config = array_merge($config, $appConfig);
$config[&#39;debug&#39;] = ($config[&#39;debug&#39;]?? SF_DEBUG);
...省略代码
Nach dem Login kopieren

Der Parsing-Routing-Teil fügt auch eine benutzerdefinierte Routing-Verarbeitung hinzu:

// Application...省略代码
public function handleRequest(Request $request){
    $route = $request->resolve($this->_config[&#39;route&#39;]??[]);

    $response = $request->runAction($route);
    /**
     * 执行结果赋值给$response->data,并返回给response对象
     */
    if ($response instanceof Response) {
        return $response;
    }

    throw new SaiException(&#39;Content format error&#39;);}
    ...省略代码
    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(&#39;/&#39;, $route);
    $match = array_filter($match);
    ...省略代码
Nach dem Login kopieren

Öffnen Sie nach dem Speichern den Browser, um den Effekt zu sehen:

PHP-DIY-Serie zur benutzerdefinierten Konfiguration und Weiterleitung

PHP-DIY-Serie zur benutzerdefinierten Konfiguration und Weiterleitung

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[&#39;route&#39;]??[]);

    $response = $request->runAction($route, $this->_config[&#39;defaultRoute&#39;]??true);
    /**
     * 执行结果赋值给$response->data,并返回给response对象
     */
    if ($response instanceof Response) {
        return $response;
    }

    throw new SaiException(&#39;Content format error&#39;);}
    ...省略代码
Nach dem Login kopieren
...省略代码
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);
    }
    ...省略代码
Nach dem Login kopieren

Fügen Sie in der Konfiguration unter der App Folgendes hinzu:

return [
    &#39;debug&#39; => false,
    &#39;route&#39; => [
        &#39;&#39; => &#39;demo/welcome&#39;,
        &#39;test&#39; => &#39;demo/test&#39;,
    ],
    &#39;defaultRoute&#39; => false,];
Nach dem Login kopieren

Wir öffnen den Browser und geben saif.com/login

<🎜 ein >Der Fehler wird wie folgt gemeldet:

Array
(
    [line] => 137
    [msg] => route not found:login
    [code] => 404
    [file] => library/Https/Request.php
)
Nach dem Login kopieren
Verwandte Lernempfehlungen:

PHP-Programmierung vom Einstieg bis zur Kompetenz

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage