IT

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

lottoking 2020. 9. 5. 10:07
반응형

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


클래스가 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 * 줄에 '{'가 필요합니다.

다른 방법으로 시도해.

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{ 

}

참고 URL : https://stackoverflow.com/questions/652157/can-a-class-extend-both-a-class-and-implement-an-interface

반응형