PHP에서 비정적 메서드를 정적으로 호출하면 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-24 11:42:11
원래의
830명이 탐색했습니다.

Why Does Calling a Non-Static Method Statically in PHP Result in an Error?

정적 메서드 호출 정적 메서드 오류 이해

PHP에서 제공된 코드 조각에 오류 메시지가 표시됩니다.

Strict standards: Non-static method
Page::getInstanceByName() should not
be called statically in
/var/www/webworks/index.php on line 12
로그인 후 복사

이 오류는 Page 클래스의 비정적 메서드가 정적으로 호출될 때 발생합니다. 허용됩니다.

Fix

이 문제를 해결하려면 Page 클래스의 getInstanceByName() 메서드를 static으로 선언해야 합니다. 다음 행을 수정합니다.

function getInstanceByName($name='')
로그인 후 복사

to:

public static function getInstanceByName($name='')
로그인 후 복사

메서드를 정적으로 선언하면 다음과 같이 클래스 이름을 사용하여 호출할 수 있습니다.

$r = Page::getInstanceByName($page);
로그인 후 복사

추가 고려 사항

  • 정적 메서드 및 테스트 가능성: 정적 메서드는 조롱하거나 스텁할 수 없으므로 이에 의존하는 코드를 테스트하기 어려울 수 있습니다. 대신 생성자 또는 메서드를 통해 개체에 데이터를 전달하는 종속성 주입을 사용해 보세요.
  • 생성자 복잡성: Page 클래스의 생성자가 너무 많은 작업을 수행합니다. 데이터 베이스. 생성자는 객체의 상태를 초기화하는 데에만 사용해야 하며 복잡한 작업을 수행하는 데는 사용하지 마세요.

위 내용은 PHP에서 비정적 메서드를 정적으로 호출하면 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿