Вы не вызвали родительский конструктор из тестового класса.
Документы PHP говорят:
Примечание: родительские конструкторы не вызываются неявно, если дочерний класс определяет конструктор,Для запуска родительского конструктора требуется вызов метода parent :: __ construct () внутри дочернего конструктора.Если дочерний элемент не определяет конструктор>, он может быть унаследован от родительского класса, как обычный метод класса (если он не был объявлен как закрытый).
Я изменил ваш тестовый класс следующим образом: (с измененным запросом к таблице в моей тестовой БД)
class test extends core {
public function __construct(){
parent::__construct();
}
public function test() {
$this->query("SELECT * FROM bug_table");
foreach ($this->rows() as $row) {
echo $row['category_id'], '<br>';
}
}
}
Вывод:
Server
Database
Server
Server
Server
... при той же самой информации PHP, найденной здесь , я изменил конструктор класса test()
на __construct
, как у вас в классе core
, но сохранил функцию с именем test()
, которая выполняетзапрос.Наличие конструктора с тем же именем, что и у класса, быстро устареет.В зависимости от вашей версии PHP, запустите php -l file.php
в командной строке вашего файла, чтобы проверить возможные проблемы.