[php] 클래스가 클래스를 확장하고 인터페이스를 구현할 수 있습니까?

클래스가 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, * 파일 *의 * 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{

}


답변