>백엔드 개발 >PHP 튜토리얼 >PHP에서 \'메소드 선언은 상위 메소드와 호환되어야 합니다\' 오류가 발생하는 이유는 무엇입니까?

PHP에서 \'메소드 선언은 상위 메소드와 호환되어야 합니다\' 오류가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-02 07:00:30378검색

Why Do I Get the

PHP의 "메소드 선언은 상위 메소드와 호환되어야 함" 오류 이해

PHP에서 객체 지향 프로그래밍 작업을 할 때 "엄격한 표준: childClass::customMethod()의 선언은 parentClass::customMethod()의 선언과 호환되어야 합니다." 오류가 발생할 수 있습니다. 이 오류는 하위 클래스의 메소드 선언이 상위 클래스의 해당 메소드 선언과 일치해야 함을 나타냅니다.

가능한 원인:

오류 두 가지 주요 원인으로 인해 발생할 수 있습니다:

  • 인수 불일치: 하위 클래스의 메소드는 상위 메소드와 비교하여 다른 입력 매개변수(인수)를 갖습니다. 여기에는 인수 수, 유형 또는 순서의 차이가 포함됩니다.
  • 액세스 수준 불일치: 하위 클래스에 있는 메서드의 액세스 수준(공개, 비공개 또는 보호)이 다릅니다. 부모 메서드와 동일합니다. 예를 들어, 상위 클래스에서 "public"으로 선언된 메소드는 하위 클래스에서 "private"으로 선언될 수 없습니다.

호환 가능한 메소드 선언:

호환성을 보장하려면 하위 클래스의 메서드 선언이 다음 측면에서 상위 클래스의 선언과 일치해야 합니다.

  • 입력 매개변수(숫자, 유형, 순서)
  • 반환 유형
  • 액세스 수준

문서 및 리소스:

  • [공식 PHP 매뉴얼: 메소드 오버로딩](https: //www.php.net/manual/en/언어.oop5.overloading.php)
  • [PHPStan: 기본 수준 메서드 호환성](https://phpstan.org/user-guide/rules/methods /basic-method-compatibility)
  • [스택 오버플로: "메소드 클래스::메서드 선언은 parentClass::메서드의 선언과 호환되어야 합니다"는 무엇을 의미합니까?](https://stackoverflow.com /questions/2194559/what-does-the-declaration-of-method-classmethod-should-be- Compatible-with-that)

위 내용은 PHP에서 \'메소드 선언은 상위 메소드와 호환되어야 합니다\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.