Can a class extend both a class and implement an Interface

Can a class extend both an interface and another class in PHP?
Basically I want to do this:

interface databaseInterface{
 public function query($q);
 public function escape($s);
 //more methods
}

class database{ //extends both mysqli and implements databaseInterface
 //etc.
}

How would one do this, simply doing:

class database implements databaseInterface extends mysqli{ 

results in a fatal error:

Parse error: syntax error, unexpected T_EXTENDS, expecting '{' in *file* on line *line*

Try it the other way around:

class database extends mysqli implements databaseInterface { ...}

This should work.


Yes it can. You just need to retain the correct order.

class database extends mysqli implements databaseInterface { ... }

Moreover, a class can implement more than one interface. Just separate 'em with commas.

However, I feel obliged to warn you that extending mysqli class is incredibly bad idea . Inheritance per se is probably the most overrated and misused concept in object oriented programming.

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

Plus, a minor thing, but naming conventions do matter. Your class database seems more general then mysqli , therefore it suggests that the latter inherits from database and not the way around.


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

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

}
链接地址: http://www.djcxy.com/p/69582.html

上一篇: 解析错误:语法错误,意外的'!'

下一篇: 类可以扩展一个类并实现一个接口