110

一个类可以在 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,在 *file* 行 *line* 中需要 '{'
4

3 回答 3

193

换个方式试试:

class database extends mysqli implements databaseInterface { ...}

这应该有效。

于 2009-03-16T21:11:26.477 回答
25

是的,它可以。您只需要保留正确的顺序。

class database extends mysqli implements databaseInterface { ... }

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

但是,我不得不警告您,扩展 mysqli 类是非常糟糕的主意。继承本身可能是面向对象编程中最被高估和滥用的概念。

相反,我建议以 mysqli 方式(或 PDO 方式)做与 db 相关的事情。

另外,一件小事,但命名约定确实很重要。那么你的类database似乎更一般mysqli,因此它表明后者继承自database而不是周围的方式。

于 2009-03-16T21:14:56.200 回答
10

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

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

}
于 2015-09-12T13:53:41.193 回答