类可以扩展类并实现接口

时间:2009-03-16 21:08:10

标签: php php-parse-error

一个类可以扩展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*

3 个答案:

答案 0 :(得分:153)

反过来试试:

class database extends mysqli implements databaseInterface { ...}

这应该有用。

答案 1 :(得分:17)

是的,它可以。您只需要保留正确的订单。

class database extends mysqli implements databaseInterface { ... }

此外,一个类可以实现多个接口。用逗号分隔'em。

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

相反,我建议使用mysqli方式(或PDO方式)执行db相关的东西。

另外,这是一个小问题,但命名约定很重要。您的班级database似乎比mysqli更为通用,因此它表明后者继承自database,而不是继续。

答案 2 :(得分:3)

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

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

}