类方法返回NULL变量

时间:2015-04-03 11:44:17

标签: php

我有一个类,它正在设置一个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传递到类中,我从来没有以这种方式工作。它只是不能正常工作,我不知道为什么。

我尝试了很多东西:

  • 将$ db更改为$ this-&gt; db = new Database;相反,看看注射是否存在范围问题。仍为空。
  • 在构造函数中定义了$ this-&gt; id,而不是通过注入。它仍然返回NULL。让我清楚地说明那里发生了什么。 在构造函数中我放了$ this-&gt; id ='123456',返回值为NULL。 - WTF?
  • 使用全局$ id(我不想,但绝望的时候......)仍然是NULL。
然后我做了一个虚拟函数:

public function WTF() {

    return 'WHAT THE HELL IS GOING ON';
}

当我在带有echo $ api-&gt; WTF()的页面中调用它时,没有任何反应。对于所有意图和目的,似乎我的类是未定义的但它不是,因为否则它甚至不会在var_dump上返回NULL。我也通过设置error_reporting(-1)获得零错误。

经过将近两个小时的试图调试后,我完全被难倒了。

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');
相关问题