Неустранимая ошибка: неперехваченная ошибка: вызов функции-члена getReference() при нуле в

#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();