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');
}