PHP无需工作

时间:2016-11-14 18:24:53

标签: php .htaccess redirect

当我访问我的网站时,应该将我重定向到google.com

这是我的结构:

application
    -config
        -Application.php
        -Router.php
public
    -index.php

这是我的代码:

的index.php

require '../application/config/Application.php';
$app = new Application();

Application.php

<?php
require dirname(__DIR__).'config/Router.php';

class Application {

    private $router = new Router();

    public function __construct() {
        $this->router;
    }

}
?>

Router.php

class Router {

    public function __construct() {
        header('Location: https://www.google.com');
    }

}

我希望它从索引重定向 - &gt;到Application.php - &gt;到Router.php - &gt;在构造中重定向到google.com。

编辑:我知道它到达Application.php,因为如果我将header放在Application.php构造中,它会重定向。它没有进入Router.php

为什么我要做这一切?因为我想先测试一切是否正常工作。

1 个答案:

答案 0 :(得分:4)

private $router = new Router();无法上班。您需要在构造函数中分配它。

class Application {

    private $router;

    public function __construct() {
        $this->router = new Router();
    }

}

来自PHP documenation on properties

  

此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

new Router()无法在编译时进行评估。

此外,require dirname(__DIR__).'config/Router.php';看起来会导致您遇到问题,因为dirname(__DIR__)不会有尾随斜杠。

如果你enabled error reporting,那么通过这种调试你会好多了。这些错误可以很好地告诉你问题在哪里,如果没有它们,你的调试就会在黑暗中进行大量的拍摄。