我正在做我的第一个PHP路由器,并尝试了许多教程,例如:
The simplest php router,How to build a basic server side...
以及其他一些,最后采用了这种方法Create a PHP routing system
首先,我的问题是我只得到空白页,但是在这里得到一些帮助之后,我解决了这个问题,现在一切正常,除了我的起始页上收到未定义的偏移量:0。
我正在使用array_shift,然后我的数组为空:
array(0) { }
因此,我可以看到这是没有用的,但是问题是如果我删除它或采用其他方法我的路由器停止工作。
这里是发生问题的我的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);
$route = trim($route, "/");
var_dump($route);
// if(isset($uri) == $route){
array_shift($uri);
var_dump($uri);
if($uri[0] == $route) {
// var_dump($uri);
require __DIR__ . $file . '.php';
}
// }
}
}
?>
我试图将$ uri [0]包装在if(isset ..)语句中,但这也会使路由器停止。我在php手册中搜索了不同的数组函数,但老实说,我不明白它的一半是什么。通常,我在此论坛中搜索时会获得最多的知识,并且通常会以这种方式解决它,但这确实使我难以自拔。
谁知道如何消除此偏移量错误?
[调用$route->get($url, $file)
时,将“ / start”和“ / product”用作文件。在get方法内部,然后加载"/start".".php"
,这导致从硬盘驱动器的根目录加载“ start.php”(假设您在Windows上使用XAMPP)。将require $file . '.php';
替换为require __DIR__ . $file . '.php';
,以从当前目录加载文件。