PHP 오류: 정적으로 호출되는 비정적 메서드
오류 메시지 "엄격한 표준: 비정적 메서드 Page::getInstanceByName() PHP에서 "정적으로 호출해서는 안 됩니다"라는 메시지는 마치 정적이 아닌 메소드를 호출하려고 시도하고 있음을 나타냅니다. static.
정적 메서드 이해
정적 메서드는 클래스의 개체를 인스턴스화하지 않고 호출할 수 있는 클래스 메서드입니다. static 키워드를 사용하여 선언됩니다. 정적 메서드는 일반적으로 유틸리티 함수나 클래스 속성에 액세스하는 데 사용됩니다.
오류 수정
제공된 코드에서 페이지 클래스의 getInstanceByName() 메서드는 다음과 같습니다. 정적으로 선언되지 않았습니다. 오류를 수정하려면 메서드 선언에 static 키워드를 추가하세요.
public static function getInstanceByName($name='') { // Method implementation... }
이렇게 변경한 후에는 오류를 수신하지 않고 getInstanceByName()을 호출할 수 있어야 합니다.
테스트 가능성 고려 사항
정적 방법은 편리할 수 있지만 단위 테스트를 더 어렵게 만들 수 있다는 점에 유의하는 것이 중요합니다. 그 이유는 정적 메서드가 클래스의 특정 인스턴스에 묶여 있지 않기 때문에 분리하여 모의하거나 쉽게 테스트할 수 없기 때문입니다.
생성자에서 쿼리
또한 Page 클래스 생성자에는 성능과 코드 가독성에 영향을 미칠 수 있는 과도한 쿼리가 포함되어 있다는 점을 언급할 가치가 있습니다. 쿼리를 별도의 메서드로 이동하거나 종속성 주입을 통해 필요한 데이터를 주입하려면 코드를 리팩터링하는 것이 좋습니다.
위 내용은 PHP 오류: '정적으로 호출된 비정적 메소드'를 해결하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!