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

Тут обертка дб, на процедурке работает нормально.
Если вынесу эту функцию за класс, то вывод происходит.
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 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();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 19:22
18000 руб./за проект
25 апр. 2024, в 19:21
10000 руб./за проект
25 апр. 2024, в 18:47
2795100 руб./за проект