클래스가 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{
}