Skip to content
CannonPHP

路由

在 CannonPHP 中,路由指的是定义应用程序响应的路由。路由定义了应用程序的入口点,并确定哪个控制器应处理传入的请求。CannonPHP 提供了一种简单而表达力强的语法来定义路由。

路由定义

在 CannonPHP 中,路由定义在 App/Routes.php 文件中。该文件包含了您的应用程序 Web 接口的路由声明。

以下是一个基本路由定义的示例:

$router->add('{controller}/{action}');

在这个示例中,我们定义了一个路由,用于响应任意 URL,如 http://example.com/user/updatehttp://example.com/post/delete。当用户访问 http://example.com/user/update 时,将调用 user 控制器类中的 updateAction 方法来处理请求。

正则表达式路由

您可以使用正则表达式来限制路由参数的格式。

以下是一个正则表达式路由定义的示例:

$router->add('{controller}/id:\d+/{action}');

在这个示例中,我们定义了一个正则表达式路由,用于响应任意 URL,如 http://example.com/user/1/updatehttp://example.com/post/2/delete。当用户访问 http://example.com/user/1/update 时,将调用 user 控制器类中的 updateAction 方法来处理请求,并且路由参数中的 id 值 1 将作为 updateAction 的第一个参数。以下是用法示例:

<?php

namespace App\Controller;

use Core\BaseController;

class Home extends BaseController
{
    public function indexAction()
    {
        return 'home/index';
    }

    public function updateAction($params)
    {
        return $params['id'];
    }
}

路由前缀

您可能需要为路由添加前缀。 以下是一个路由前缀的示例: php $router->add('admin/{controller}/{action}', ['namespace' => 'admin']); 在这个示例中,我们定义了一个路由前缀,用于响应任意 URL,如 http://example.com/admin/user/update。当用户访问 http://example.com/admin/user/update 时,将调用 admin 文件夹下的 user 控制器类中的 updateAction 方法来处理请求。

固定路由

您可能需要添加一个固定的路由。

以下是一个固定路由的示例:

$router->add('user/index', ['controller' => 'User', 'action' => 'index']);
$router->add('', ['controller' => 'home', 'action' => 'index']);

在这个示例中,我们定义了一个固定路由,分别响应固定的 URL http://example.com/user/indexhttp://example.com。当用户访问 http://example.com/user/index 时,将调用 user 控制器类中的 indexAction 方法来处理请求。类似地,当用户访问 http://example.com 时,将调用 home 控制器类的 indexAction 方法来处理请求。

controller 和 action 关键字

controller 和 action 是路由系统中的关键字,用于准确确定要调用的适当方法。在路由文件中定义控制器和操作时,使用这些特定关键字而不是其他术语非常重要。遵循这些关键字的使用确保了路由系统内的一致性和兼容性,从而实现无缝的导航和方法调用。

结论 本指南介绍了 CannonPHP 中路由的基础知识。您可以在 routes.php 文件中定义路由,并处理不同的 HTTP URL、定义路由参数、为路由分配命名空间以及定义具有公共属性的固定路由。通过利用 CannonPHP 的路由功能,您可以构建功能强大而灵活的应用程序。