PHP 개발에서 오류 메시지를 "NULL의 멤버 함수로 호출"또는 "비 객체 방법을 호출하십시오"를보고하는 것이 매우 일반적입니다. 이 유형의 오류는 일반적으로 성공적으로 인스턴스화되지 않은 객체에서 메소드를 호출하려고한다는 것을 의미합니다. 즉, 변수는 실제로 객체가 아닙니다.
이 문제를 이해하려면 분명해야합니다. PHP에서는 객체 유형의 변수 만 메소드를 호출 할 수 있습니다. 비 객체 변수 (예 : NULL 또는 String)에서 메소드를 호출하려고하면 시스템이 비슷한 오류를 던집니다.
다음은 이러한 오류로 이어지는 두 가지 주요 상황입니다.
코드에서 객체의 메소드를 사용하려고 할 때 객체가 올바르게 생성되었는지 확인해야합니다. 클래스 파일이 올바르게 소개되지 않으면 네임 스페이스가 올바르지 않거나 생성자에 구문 오류가 있으면 개체를 인스턴스화 할 수 없습니다.
솔루션은 다음과 같습니다.
class Foo {
// 생성자의 구문 오류가 없습니다
public function __construct() {
echo 'Hello, World!';
}
}
// 잘못된 사용:인스턴스화없이 통화 방법
Foo::bar(); // Fatal error
// 올바른 사용법:먼저 개체를 인스턴스화하십시오
$foo = new Foo();
$foo->bar(); // Fatal error: 정의되지 않은 방법 bar()
또 다른 일반적인 문제는 코드 실행 중에 객체 변수를 NULL로 설정하거나 다른 비 객체 유형에 값을 잘못 할당하여 메소드를 호출 할 때 오류가 발생하는 것입니다.
해결책:
class Foo {
public function bar() {
echo 'Hello, World!';
}
}
// 오류 예제:객체가 설정됩니다 null
$foo = null;
$foo->bar(); // Fatal error: Call to a member function bar() on null
// 올바른 예:먼저 개체를 인스턴스화하십시오
$foo = new Foo();
$foo->bar(); // 산출 Hello, World!
PHP에서 "비 객체 메소드를 호출하려고 시도"오류는 대부분 잘못 인스턴스화 된 객체 또는 객체 변수가 잘못 지정되어 있기 때문에 발생합니다. 합리적인 객체 초기화 로직과 엄격한 변수 검사 메커니즘을 통해 이러한 오류는 효과적으로 피할 수 있으며 코드 품질과 견고성을 향상시킬 수 있습니다.