Ответ 1
Попробуйте наоборот:
class database extends mysqli implements databaseInterface { ...}
Это должно работать.
Может ли класс расширять как интерфейс, так и другой класс в PHP?
В основном я хочу это сделать:
interface databaseInterface{
public function query($q);
public function escape($s);
//more methods
}
class database{ //extends both mysqli and implements databaseInterface
//etc.
}
Как это сделать, просто делая:
class database implements databaseInterface extends mysqli{
приводит к фатальной ошибке:
Parse error: syntax error, unexpected T_EXTENDS, expecting '{' in *file* on line *line*
Попробуйте наоборот:
class database extends mysqli implements databaseInterface { ...}
Это должно работать.
Да, может. Вам просто нужно сохранить правильный порядок.
class database extends mysqli implements databaseInterface { ... }
Кроме того, класс может реализовывать более одного интерфейса. Просто разделите их запятыми.
Однако я чувствую себя обязанным предупредить вас, что расширение класса mysqli - невероятно плохая идея. Наследование как таковое, вероятно, является самой переоцененной и неправильно используемой концепцией в объектно-ориентированном программировании.
Вместо этого я бы посоветовал использовать db-связанные вещи методом mysqli (или способом PDO).
Плюс, второстепенное, но соглашения об именах имеют значение. Ваш класс database
кажется более общим, чем mysqli
, поэтому он предполагает, что последний наследует от database
, а не наоборот.
да, на самом деле, если вы хотите реализовать несколько интерфейсов, вы можете сделать это следующим образом:
public class MyClass extends BaseClass implements myInterface1, myInterface2, myInterface3{
}