Может ли класс расширить оба класса и реализовать интерфейс

Может ли класс расширять как интерфейс, так и другой класс в 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{ 

приводит к фатальной ошибке:

 Ошибка анализа: синтаксическая ошибка, неожиданный T_EXTENDS, ожидающий '{' 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{ }