@deadmemoras

Выдает ошибку при выводе записей из бд?

'Call to a member function getAll() on null in'
require('database.php');
 $db = new SafeMySQL();
 class add
 {
   public function showphotos()
   {
      $data = $db->getAll("SELECT * FROM photos");
      echo json_encode($data);
   }
 }
  $test = new add();
 $test->showphotos();

Тут обертка дб, на процедурке работает нормально.
Если вынесу эту функцию за класс, то вывод происходит.
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
@unity_ultra_hardcore
Отвратительный код, но конкретно в этом случае переменную $db надо объявить глобальной:
<?php

require('database.php');

$db = new SafeMySQL();

class Add
{
    public function showphotos() {
        global $db;
        $data = $db->getAll("SELECT * FROM photos");
        echo json_encode($data);
    }
}

$test = new Add();
$test->showphotos();

А лучше сделать явную зависимость класса Add от подключения:

<?php

require('database.php');

class Add
{
    protected $db;

    public function __construct(SafeMySQL $db)
    {
        $this->db = $db;
    }

    public function showphotos() {
        $data = $this->db->getAll("SELECT * FROM photos");
        echo json_encode($data);
    }
}
$db = new SafeMySQL();
$test = new Add($db);
$test->showphotos();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы