У меня есть сайт.
Недавно мне пришлось расширить Sqlite3 для использования некоторых функций и определения некоторых пользовательских, но теперь у меня есть это сообщение об ошибке:
Неустранимая ошибка: необработанное исключение «Исключение» с сообщением «SQLite3 :: __ construct () ожидает как минимум 1 параметр, задано 0» строка 138
это строка 138:
$output = new functions(); $output-> bothQuery();
Мой класс расширяющий sqlite3:
class functions extends SQLite3 {
// Functions to sort data based on input
public function bothQuery() { /*...*/ }
function nameQuery() { /*...*/ }
function cateQuery() { /*...*/ }
}
Как я могу решить это?
Кроме того, строка 138 находится в верхнем сегменте кода, где она говорит: $ output = new functions ();
вам следует учиться на базовых уроках php oop но вот проблема, с которой вы столкнулись:
класс Sqlite3, похоже, имеет конструктор. Классы обычно имеют конструкторы. Конструктор иногда принимает параметры, такие как конструктор для класса Sqlite3
что происходит, когда вы расширяете класс class functions extends SQLite3
является то, что он будет использовать это родитель (то есть Sqlite3) конструктор если это не определено у ребенка (то есть функции) класс. Конструктор Sqlite3, как мы видим на его странице руководства, в качестве первого параметра хочет параметр (имя файла базы данных sqlite). поэтому, когда вы делаете:
$output = new functions();
вы на самом деле строят Sqlite3 экземпляр, даже если он называется функции, так как functions extends SQLite3
, Таким образом, вы должны дать ему нормальный параметр, то же самое, что вы бы дали при вызове new Sqlite3()
Я публикую этот ответ 31-1-2019, для людей, которые просто приходят сюда, следуя миниатюре
Я также столкнулся с той же проблемой, и, наконец, я нашел решение
проблема в вашем методе construct (), вы пропустили один ‘_’
там у нас есть два метода конструкции ()
1 .__ construct (), с двумя ‘_’, не требующими параметров
2._construct (),
with one '_'
, что требует некоторых параметров