PHP简单路由显示空白页面

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

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

The simplest php routerHow 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中运行我的项目,并且我已经在网上搜索了一下是否会导致问题,但是我找不到任何人遇到同样的问题。

有人知道为什么文件没有传递到函数中吗?

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

[调用$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.