lesichkovm / php-autoroute
自动将提供的路由映射到控制器和方法
v2.0.0
2018-04-01 09:55 UTC
This package is auto-updated.
Last update: 2024-09-23 16:42:00 UTC
README
"设置并忘记"的智能路由脚本。
安装
A. 使用composer(推荐)
composer require lesichkovm/php-autoroute
B. 通过composer手动安装
将以下内容添加到您的composer文件中
"repositories": [ { "type": "vcs", "url": "https://github.com/lesichkovm/php-autoroute.git" } ], "require": { "lesichkovm/php-autoroute": "dev-master" },
它是如何工作的?
仅从路由(URI)中找到并执行相应的控制器和方法。传递当前路由,autoroute将调用相关联的控制器和方法。
需求
您的控制器类必须是包含的(例如,使用require_once),或者您必须注册一个自动加载函数(推荐)。
有关如何注册和自动加载类的信息,请参阅https://php.ac.cn/manual/en/language.oop5.autoload.php。
示例路由
路由:/admin/user-management/view-users
执行:Admin\UserManagementController@viewUsers
路由:user/admin/test/home
执行:User\Admin\TestController@home
使用请求方法的路由示例
路由:/admin/user-management/view-users
执行:Admin\UserManagementController@getViewUsers
路由:user/admin/test/home
执行:User\Admin\TestController@getHome
如何使用
简单的一行示例
autoroute(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
具有异常捕获的高级选项
// 1. Get the current route $route = isset($_REQUEST['route']) ? $_REQUEST['route'] : ''; // 2. Autoroute try { autoroute($route, [ 'default_method' => 'index', 'default_controller' => 'Guest', 'default_namespace' => 'App\\Controllers', 'use_request_method' => true, ]); } catch (ReflectionException $re) { // Page not found die('Not found:' . $re->controller . '@' . $re->method); } catch (Exception $e) { // Other non routing related exception // Deal with exception (i.e. send yourself a mail) die('Exception occurred'); }