当我访问我的网站时,应该将我重定向到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
为什么我要做这一切?因为我想先测试一切是否正常工作。
答案 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,那么通过这种调试你会好多了。这些错误可以很好地告诉你问题在哪里,如果没有它们,你的调试就会在黑暗中进行大量的拍摄。