PHP简单路由-未定义偏移量0的错误

问题描述 投票:0回答:1

我正在做我的第一个PHP路由器,并尝试了许多教程,例如:

The simplest php routerHow 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手册中搜索了不同的数组函数,但老实说,我不明白它的一半是什么。通常,我在此论坛中搜索时会获得最多的知识,并且通常会以这种方式解决它,但这确实使我难以自拔。

谁知道如何消除此偏移量错误?

php routing pretty-urls
1个回答
1
投票

[调用$route->get($url, $file)时,将“ / start”和“ / product”用作文件。在get方法内部,然后加载"/start".".php",这导致从硬盘驱动器的根目录加载“ start.php”(假设您在Windows上使用XAMPP)。将require $file . '.php';替换为require __DIR__ . $file . '.php';,以从当前目录加载文件。

© www.soinside.com 2019 - 2024. All rights reserved.