创建更好的路由器:处理隐藏输入和删除请求-php教程

首页 2024-07-09 18:19:45

几天前,我学会了建造一个将军。 URL 映射到控制器的基本路由器。现在,我需要加强它来构建一个更好的具有高级功能的路由器。要构建一个更好的隐藏输入路由器,首先从项目中删除基本路由器 router.php 并创建新的文件。让我们开始吧。

路由简介

我们需要建立一个更好的路由器,这将是有效的 URL 映射到特定的控制器或操作中,使我们的应用程序处理请求并将其路由到适当的处理程序中。
更好的路由器可以处理隐藏输入的能力,通过记笔记 ID 传输到控制器而不暴露在控制器上 URL 删除安全笔记,防止用户干扰。

<input type="hidden" name="_method" value="DELETE">
创建路由器文件

为了创建路由器文件,我们必须使用命名空间初始化 Router 本例为类 Core。

<?php 命名空间核心;

 路由器类 { }
公共函数(公共参数)

构建路由器类别后,我们必须定义公共函数,所有函数都有相同的参数,例如 get、post、delete、patch 和 put 作为一个基本路由,帮助我们的网站确定当有人访问某个页面时要执行的操作。这些函数具有相同的参数,因此它们可以执行相同的操作。

公共函数 get($uri, $controller) {
 $this-&gt;add('GET', $uri, $controller); }
公共函数 post($uri, $controller) {
 $this-&gt;add('POST', $uri, $controller); }
删除公共函数($uri,$controller){ 
$this-&gt;add('DELETE', $uri, $controller); }
补丁公共函数($uri,$controller){ 
$this-&gt;add('PATCH', $uri, $controller); }
公共函数 put($uri, $controller) { $this-&gt;add('PUT', $uri, $controller); }
添加方法

因为所有的公共函数都有相同的参数,所以我们使用它 add 该方法为其提供相同的参数,并仅在其他函数中调用。它用于向路由映射添加三个参数:请求方法和匹配 URI 处理请求的模式和控制器文件。

ADD公共函数($method, $uri, $controller) { 
  $这个-&gt;路线[] = [ 
    'uri' =&gt; $uri, 
    '控制器' =&gt; $控制器, 
    '方法' =&gt; $方法 
  ]; 
}
路线方法

在这里,我们定义了路由方法来确定应用程序 URL 响应,并将其映射到相应的控制器中处理请求。

公共函数路由($uri, $method) { 
  foreach ($this-&gt;routes as $route) { 
    if ($route['uri'] === $uri &amp;&amp; $route['method'] === strtoupper($method)) { 
      返回需要base__path($route['controller']); 
    } 
  } 
  $this-&gt;abort(); 
}
strtoupper 函数

在route方法中,我们使用strtouper函数将字符串转换为大写,以确保不区分大小写。

strtoupper($方法)
保护功能(中止)

在 router.php 在文件中,我们将 abort 该方法被定义为安全网络,如果我们的网站找不到正确的路由,就会显示错误的页面。

中止受保护函数($code = 404) { 
  http_response_code($code); 
  需要base__path(“views/{$code}.php”); 
  死(); 
}
路线定义

最后一件事是routess.将路由配置定义为php文件,并将URL映射到相应的控制器中。

$router-&gt;get('/', 'controllers/index.php'); 
$router-&gt;get('/about', 'controllers/about.php'); 
$router-&gt;get('/contact', 'controllers/contact.php'); 
$router-&gt;get('/notes', 'controllers/notes/index.php'); 
$router-&gt;get('/note', 'controllers/notes/show.php'); 
$router-&gt;get('/notes/create', 'controllers/notes/create.php');

get 该方法指定了请求方法(GET)、URL 并将其映射到控制器文件中。

结论

总之,我们已经建立了一个更好的路由器,可以有效地工作 URL 映射到特定的控制器方法,以实现更结构化和可维护的方法来处理请求,并提高我们网站的整体性能和可扩展性。

我希望你能清楚地理解。

以上是创建更好的路由器:处理隐藏输入和删除请求的详细信息,请更多地关注其他相关文章!


p