Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP method_exists() 함수 – 클래스 메서드 존재 여부 확인하기

PHP의 method_exists() 함수는 특정 클래스나 객체에 해당 메서드가 정의되어 있는지 확인하는 데 사용됩니다. 동적으로 메서드를 호출하기 전에 메서드의 존재 여부를 미리 검사해야 할 때 유용하게 활용할 수 있습니다.

문법

method_exists(object, name_of_method)

매개변수

  • object − 검사 대상이 되는 객체 인스턴스 또는 클래스 이름

  • name_of_method − 존재 여부를 확인할 메서드 이름

반환값

method_exists() 함수는 지정한 객체(또는 클래스)에 해당 메서드가 정의되어 있으면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.

예제 1: 객체 인스턴스로 확인하기

다음은 Directory 클래스의 인스턴스를 생성한 뒤, 존재하지 않는 메서드를 검사하는 예제입니다.

<?php
$directory = new Directory('.');
var_dump(method_exists($directory, 'anything'));
?>

출력

bool(false)

'anything'이라는 메서드는 Directory 클래스에 정의되어 있지 않으므로 false가 반환됩니다.

예제 2: 클래스 이름으로 확인하기

객체 인스턴스 대신 클래스 이름을 문자열로 직접 전달하여 메서드의 존재 여부를 확인할 수도 있습니다.

<?php
var_dump(method_exists('Directory', 'read'));
?>

출력

bool(true)

read 메서드는 Directory 클래스에 실제로 정의되어 있으므로 true가 반환됩니다.

참고 사항

method_exists() 함수는 부모 클래스로부터 상속받은 메서드까지 포함하여 검사합니다. 다만 접근 제한자(private, protected)로 선언된 메서드라 하더라도 정의만 되어 있으면 true를 반환한다는 점에 유의하세요. 또한 __call() 같은 매직 메서드를 통해 동적으로 처리되는 메서드는 이 함수로 감지할 수 없으며, 이 경우에는 is_callable() 함수를 사용하는 것이 좋습니다.