Я довольно новичок в OOP php, но уже несколько лет кодирую процедурно. Это совершенно другой способ кодирования (по крайней мере, для меня), поэтому я просто не могу обдумать это:
В основном мне нужно извлечь MySQL данные и отобразить их в таблице. На данный момент у меня есть класс DBQuery
с двумя функциями - одна для запроса данных и сохранения их в массиве, а другая для рендеринга таблицы с использованием содержимого массива.
Если I var_dump()
массив из класса запросов, я получаю содержимое из базы данных, как я должен. Но если я сделаю то же самое в функции displayTable()
, она будет пустой. Тем не менее, я создал массив $testvar
, который отлично подходит для обеих функций var_dump()
, поэтому у меня может возникнуть ошибка в процессе обработки массива $data
, из-за которого он в какой-то момент сам себя разрушит, или я не передаю это правильный путь.
Я боролся с этим уже 3 дня, и я уверен, что где-то упускаю важную деталь - просто не могу ее точно определить.
Мой класс DBQuery:
class DBQuery extends dbc {
private $query;
private $testvar = array('testing one','testing two','testing three');
private $data = array();
public function __construct($sqlQuery) {
$testvar = $this->testvar;
$data = $this->data;
$this->query = $sqlQuery;
$result = $this->connect()->query($sqlQuery) or die('Database error');
$numRows = $result->num_rows;
if ($numRows > 0) {
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
var_dump($data); // ***** THIS HAS CONTENT *****
}
}
public function displayTable() {
var_dump($this->testvar); // ***** THIS HAS CONTENT *****
var_dump($this->data); // ***** THIS IS EMPTY *****
}
}
И мой взгляд:
<?php
$query = new DBQuery("SELECT * FROM users");
$query->displayTable();
?>
Что я здесь не так делаю? :)