У меня есть веб-сайт.
Недавно мне пришлось расширить 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 tutorials, но вот проблема, с которой вы сталкиваетесь:
класс Sqlite3, похоже, имеет конструктор. Классы обычно имеют конструкторы. Иногда конструктор принимает параметры, такие как конструктор класса Sqlite3
что происходит, когда вы расширяете class functions extends SQLite3
класса class functions extends SQLite3
, так как он будет использовать его родительский (то есть Sqlite3) конструктор, если он не определен в классе child (то есть функции). Конструктор Sqlite3, как мы видим из его справочной страницы, хочет в качестве первого параметра параметр (имя файла базы данных sqlite). поэтому, когда вы это делаете:
$output = new functions();
вы фактически создаете экземпляр Sqlite3, хотя он и называется функциями, потому что functions extends SQLite3
. Поэтому вы должны дать ему нормальный параметр, то же самое, что вы дадите при вызове new Sqlite3()
Я публикую этот ответ 31-1-2019, для людей, которых они просто приходят сюда, следуя миниатюре. Я также столкнулся с той же проблемой, и, наконец, я нашел решение проблемы с вашим методом construct(), вы пропустили один '_'
там у нас есть два метода конструкции()
1.__ construct(), с двумя '_', не требующими параметров
2._construct(),
with one '_'
, который требует некоторых параметров
SQLite3::__construct() expects at least 1 parameter, 0 given
я бы сказал, найти место, где создается объект sqlite, и дать ему параметр, который он очень четко заявляет, что хочет? вероятно, что класс, расширяющий sqlite, не создает его правильно. это может быть там:new class()
. Вы можете видеть, что в круглых скобках не переданы параметры, в отличие отexpects at least 1 parameter
. Кроме того, где находится линия 138?