我正在尝试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'
]));
答案 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();