我有一个类,它正在设置一个API来解析外部网站的DOM,以便用游戏中的角色数据填充某人的个人资料。我的问题是,与此页面上的任何类关联的每个变量都返回null。为什么?这是相关的代码。我没有以这种方式获取ID,但我将代码提取到临时页面以简化调试。
$id = $_GET['id'];
require_once '../bootstrap.php';
$api = new GetCharacter($id,$db);
$data = $api->output();
Bootstrap就是您常用的mill数据库连接和定义设置。其中的所有内容都可以正常工作,并且所有变量都返回正确的结果(即,$ db变量具有有效的连接 - 也在内联测试。)如果我回显或var_dump来自bootstrap.php的每个变量的结果,它们都是正确的。< / p>
这是GetCharacter(我删除了所有方法,因为我的问题不涉及它们):
class GetCharacter {
private $api, $db, $html;
public $data, $id;
public function __constructor($id, $db) {
$this->id = $id;
$this->api = new GetAPI;
$this->db = $db;
}
}
现在如果我做一个虚函数返回,var_dump,print_r $ db,它是NULL。 $ api和$ id相同。这是怎么回事?我觉得我必须遗漏一些非常明显的东西。我通过依赖注入将$ id和$ db传递到类中,我从来没有以这种方式工作。它只是不能正常工作,我不知道为什么。
我尝试了很多东西:
public function WTF() {
return 'WHAT THE HELL IS GOING ON';
}
当我在带有echo $ api-&gt; WTF()的页面中调用它时,没有任何反应。对于所有意图和目的,似乎我的类是未定义的但它不是,因为否则它甚至不会在var_dump上返回NULL。我也通过设置error_reporting(-1)获得零错误。
经过将近两个小时的试图调试后,我完全被难倒了。
答案 0 :(得分:2)
它应该是构造函数的__construct()
:
public function __construct($id, $db) { // not constructor
$this->id = $id;
$this->api = new GetAPI;
$this->db = $db;
}
然后当你实例化时。
$id = $_GET['id'];
require_once '../bootstrap.php';
$api = new GetCharacter($id,$db);
echo $api->WTF(); // WHAT THE HELL IS GOING ON
旁注:您还应该打开错误报告,以便了解最新情况。
error_reporting(E_ALL);
ini_set('display_errors', '1');