비정적 메소드를 정적 함수로 액세스하려고 하면 PHP는 오류 메시지 Strictstandards: Non-를 생성합니다. 정적 메서드는 정적으로 호출하면 안 됩니다. 이 문제는 클래스의 객체를 먼저 인스턴스화하지 않고 클래스 메서드를 활용할 때 자주 발생합니다.
1. 클래스 개체 지정:
이 문제를 해결하려면 해당 메서드를 호출하기 전에 클래스의 인스턴스를 만들어야 합니다. 예를 들어
Page::getInstanceByName($page);
대신 다음을 사용합니다.
$pageInstance = new Page(); $pageInstance->getInstanceByName($page);
2. 메소드를 정적으로 표시:
클래스를 인스턴스화하지 않고 메소드를 호출하려는 경우 클래스 내에서 메소드를 정적으로 정의할 수 있습니다. 예:
class Page { public static function getInstanceByName($name) { // method implementation } }
이렇게 하면 클래스 이름을 사용하여 메서드를 직접 호출할 수 있습니다.
Page::getInstanceByName($page);
1. 테스트 가능성:
정적 메서드와 싱글톤은 테스트 가능성을 방해할 수 있습니다. 테스트 기능을 향상시키기 위해 대체 설계 패턴을 고려할 수도 있습니다.
2. 생성자 최적화:
생성자에 과도한 작업을 배치하지 마세요. 생성자는 객체를 유효한 상태로 설정하는 작업만 처리해야 합니다. 생성자에서 직접 가져오는 대신 데이터 종속성을 주입하는 것이 좋습니다. 생성자는 값을 반환할 수 없으며 항상 void를 반환한다는 점을 기억하세요.
위 내용은 PHP \'비정적 메서드 호출 정적으로\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!