프로그램 개발 시 객체를 사용하여 객체의 내부 메소드를 호출할 때 호출된 메소드가 존재하지 않으면 프로그램에서 오류가 발생하고 프로그램이 종료되어 더 이상 실행할 수 없습니다. 그래서 프로그램이 객체 내부에 존재하지 않는 메소드를 호출할 때 호출된 메소드와 사용된 매개변수가 존재하지 않는다는 메시지가 표시될 수 있지만, 이때 프로그램은 계속 실행될 수 있습니다. 존재하지 않는 메소드를 호출하면 자동으로 호출됩니다. 메소드 "__call()".
//이것은 테스트 클래스이므로 속성과 메소드가 없습니다.
class Test
{
}
/ /Test 클래스의 객체 생성
$test = new Test();
//객체에 존재하지 않는 메소드 호출
$test->demo("one", "two ", " three ");
//여기서는 프로그램이 실행되지 않습니다
echo "이것은 테스트입니다
";
?>
위의 예에서는 다음 오류가 발생하며 일반적으로 프로그램을 계속 실행할 수 없습니다.
class Test
{
//존재하지 않는 메소드 호출 시 자동으로 호출되는 메소드 첫 번째 매개변수는 메소드 이름, 두 번째 매개변수는 배열 매개변수
function __call($function_name, $args) {
print "호출한 함수: $function_name(parameters: ";
print_r($args );
echo ")가 존재하지 않습니다!
";
}
}
// 테스트 클래스 객체 생성
$test=new Test();
//객체에 존재하지 않는 메서드 호출
$test->demo("one", "two", "Three ");
//프로그램은 종료되지 않으며 여기서 실행할 수 있습니다
echo "이것은 테스트입니다
";
?>
위 예제의 출력 결과는 다음과 같습니다.
호출한 함수: 데모(매개변수: 배열([0] = > 1 [1] => 2 [2] => 3 ))이 존재하지 않습니다!
테스트입니다
위 내용은 "땅콩튀김"에서 인용했습니다. 형님, 감사합니다. 형 공유.
위의 내용을 포함하여 PHP 객체지향 OOP-__call 처리 호출 오류에 대해 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.