これは開発できましたが、さらに必要があります。カスタム構成やルーティングなど。
アプリ フォルダーに新しい 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); } ...省略代码
アプリの下の設定に、次の内容を追加します:
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 )
関連する学習の推奨事項: PHP プログラミングの入門から熟練度まで
以上がカスタム構成とルーティングの PHP DIY シリーズの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。