>백엔드 개발 >PHP 튜토리얼 >PHP \'비정적 메서드 호출 정적으로\' 오류를 수정하는 방법은 무엇입니까?

PHP \'비정적 메서드 호출 정적으로\' 오류를 수정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-14 20:17:26108검색

How to Fix the PHP

오류: 비정적 메소드를 정적으로 호출

비정적 메소드를 정적 함수로 액세스하려고 하면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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