我正在做我的第一个PHP路由器,并尝试了许多教程,例如:
The simplest php router,How to build a basic server side...
以及其他一些,最后采用了这种方法Create a PHP routing system
这里是router.php
<?php class Router{
private $request;
public function __construct($request){
$this->request = $request;
}
public function get($route, $file){
$uri = trim( $this->request, "/" );
$uri = explode("/", $uri);
var_dump($uri);
if($uri[0] == trim($route, "/")){
array_shift($uri);
$args = $uri;
// var_dump($args);
require $file . '.php';
}
}
}
和index.php
<?php
include 'router.php';
$request = $_SERVER['REQUEST_URI'];
$route = new Router($request);
$route->get('/', '/start');
var_dump($route);
$route->get('products', '/products');
var_dump($route);
我尝试使用var_dump查看我的输出是什么,我可以看到我仅获得项目名称,而文件似乎没有传入。例如,如果我回显'hello',它在索引页上可以正常工作,但是出现任何其他内容,只是空白,我无法弄清楚自己在做什么错。 (我遵循的其他教程也得到了相同的结果)我正在XAMPP中运行我的项目,并且我已经在网上搜索了一下是否会导致问题,但是我找不到任何人遇到同样的问题。
有人知道为什么文件没有传递到函数中吗?
[调用$route->get($url, $file)
时,将“ / start”和“ / product”用作文件。在get方法内部,然后加载"/start".".php"
,这导致从硬盘驱动器的根目录中加载“ start.php”(假设您在Windows上使用XAMPP)。将require $file . '.php';
替换为require __DIR__ . $file . '.php';
,以从当前目录加载文件。