致命错误:未被捕获的错误:在以下位置,调用成员函数getReference()的null:

时间:2019-03-03 16:18:45

标签: php firebase

我正在尝试PHP插入Firebase,但出现此错误。

  

致命错误:未捕获错误:调用成员函数getReference()   在C:\ xampp \ htdocs \ makatravel1 \ Account.php:44中为null堆栈跟踪:#0   C:\ xampp \ htdocs \ makatravel1 \ Account.php(72):帐户->插入(数组)#1   {main}在第44行的C:\ xampp \ htdocs \ makatravel1 \ Account.php中抛出

这是我要运行的代码-

class Account{
    protected $database;
    protected $dbname = "users";

    public function __construct(){
        $acc = ServiceAccount::fromJsonFile(__DIR__.'./firebase/key/makatravel2019-34ec2f4b7a9c.json');

        $firebase = (new Factory)
            ->withServiceAccount($acc)
            ->create();

        $database = $firebase->getDatabase();
    }

    public function insert(array $data){
        if(empty($data) || !isset($data)){
            return FALSE;
        }

        foreach($data as $key => $value) {
            $this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);
        }

        return TRUE;
    }
}



$users = new Account();

var_dump($users ->insert([
    '1' => 'John',
    '2' => 'Doe'
]));

1 个答案:

答案 0 :(得分:1)

好吧,该错误告诉您getReference() 上的 null存在问题。您的代码中有一个getReference()调用:

$this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);

该错误表明$this->database存在问题,它为'undefined'(空)。但是,您在班级顶部明确定义了它:

protected $database;

然后您尝试在构造函数方法中设置此变量:

$database = $firebase->getDatabase();

但是,这不是应该“寻址”变量的方式。您应该像处理导致错误的调用一样使用$this

$this->database = $firebase->getDatabase();