>백엔드 개발 >PHP 튜토리얼 >PHP 오류: \'정적으로 호출된 비정적 메소드\'를 해결하는 방법?

PHP 오류: \'정적으로 호출된 비정적 메소드\'를 해결하는 방법?

DDD
DDD원래의
2024-11-24 00:36:16621검색

How to Resolve the PHP Error:

PHP 오류: 정적으로 호출되는 비정적 메서드

오류 메시지 "엄격한 표준: 비정적 메서드 Page::getInstanceByName() PHP에서 "정적으로 호출해서는 안 됩니다"라는 메시지는 마치 정적이 아닌 메소드를 호출하려고 시도하고 있음을 나타냅니다. static.

정적 메서드 이해

정적 메서드는 클래스의 개체를 인스턴스화하지 않고 호출할 수 있는 클래스 메서드입니다. static 키워드를 사용하여 선언됩니다. 정적 메서드는 일반적으로 유틸리티 함수나 클래스 속성에 액세스하는 데 사용됩니다.

오류 수정

제공된 코드에서 페이지 클래스의 getInstanceByName() 메서드는 다음과 같습니다. 정적으로 선언되지 않았습니다. 오류를 수정하려면 메서드 선언에 static 키워드를 추가하세요.

public static function getInstanceByName($name='') {
    // Method implementation...
}

이렇게 변경한 후에는 오류를 수신하지 않고 getInstanceByName()을 호출할 수 있어야 합니다.

테스트 가능성 고려 사항

정적 방법은 편리할 수 있지만 단위 테스트를 더 어렵게 만들 수 있다는 점에 유의하는 것이 중요합니다. 그 이유는 정적 메서드가 클래스의 특정 인스턴스에 묶여 있지 않기 때문에 분리하여 모의하거나 쉽게 테스트할 수 없기 때문입니다.

생성자에서 쿼리

또한 Page 클래스 생성자에는 성능과 코드 가독성에 영향을 미칠 수 있는 과도한 쿼리가 포함되어 있다는 점을 언급할 가치가 있습니다. 쿼리를 별도의 메서드로 이동하거나 종속성 주입을 통해 필요한 데이터를 주입하려면 코드를 리팩터링하는 것이 좋습니다.

위 내용은 PHP 오류: \'정적으로 호출된 비정적 메소드\'를 해결하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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