#php #firebase
#php #firebase
Вопрос:
Я пытаюсь вставить PHP в firebase, но я получил эту ошибку.
Неустранимая ошибка: неперехваченная ошибка: вызов функции-члена getReference() при нуле в C:xampphtdocsmakatravel1Account.php:44 Трассировка стека: #0 C:xampphtdocsmakatravel1Account.php (72): Учетная запись-> вставка (массив) #1 {main}, введенная в C:xampphtdocsmakatravel1Account.php в строке 44
Это код, который я пытаюсь запустить-
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:
Что ж, ошибка сообщает вам, что существует проблема с getReference()
on null
. У вас есть один getReference()
вызов в вашем коде:
$this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);
В ошибке указано, что существует проблема с $this->database
, она ‘undefined’ (null). Однако вы четко определили это в верхней части вашего класса:
protected $database;
Затем вы пытаетесь установить эту переменную в своем методе конструктора:
$database = $firebase->getDatabase();
Однако это не то, как вы должны «обращаться» к переменной. Вы должны использовать $this
то же, что вы делали с вызовом, который приводит к ошибке:
$this->database = $firebase->getDatabase();