Can a class extend both a class and implement an Interface

一个类可以在 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{

results in a fatal error:

Parse error: syntax error, unexpected T_EXTENDS, expecting '{' in *file* on line *line*
91549 次浏览

试试反过来说:

class database extends mysqli implements databaseInterface { ...}

这个应该可以。

是的,它可以。你只需要保持正确的顺序。

class database extends mysqli implements databaseInterface { ... }

此外,一个类可以实现多个接口,只需用逗号将它们分开即可。

然而,我觉得有义务警告你,扩展 mysqli 类是一个非常糟糕的主意。继承本身可能是面向对象编程中最被高估和误用的概念。

Instead I'd advise doing db-related stuff the mysqli way (or PDO way).

另外,一件小事,但命名约定确实重要。您的类 database似乎比 mysqli更一般,因此它表明后者继承自 database,而不是反过来。

是的,事实上,如果你想实现多个接口,你可以这样做:

public class MyClass extends BaseClass implements myInterface1, myInterface2, myInterface3{


}