[PHP] class_exists - 클래스가 있는지 알아보기

  PHP의 class_exists 함수는 클래스(class)가 정의되었는지를 알려준다.

  선언된 클래스이면 bool 값으로 참(true)을 돌려주고, 선언되지 않은 클래스이면 bool값으로 거짓(false)을 돌려준다.

▣ 형식

class_exists(string $class, bool $autoload = true): bool
  • string $class : 대상 클래스 이름을 문자열로 넣음
  • bool $autoload : 기본값은 참(true). 이 값이 참이고 class_exists 함수가 돌려주는 값이 거짓이면, spl_autoload_resigter 함수에 등록한 함수를 실행함주1

▣ 보기

Class classA { }

spl_autoload_register(function ($class_name) {
if (class_exists($class_name, false)) {
print("class '$class_name' is exists <br />");
print('<br />');
}

if (!class_exists($class_name, false)) {
print("class '$class_name' is not exists <br />");
}
});

if (class_exists('classA')) {
$myclass = new classA();
print('classA : '); var_dump($myclass); print('<br />');
}

print('<br />');

if (class_exists('classB')) {
$myclass = new classB();
print('classB : '); var_dump($myclass); print('<br />');
}

▣ 출력 결과

classA : object(classA)#2 (0) { }

class 'classB' is not exists

  class_exists('classA')가 참이므로, classA에 대해서는 spl_autoload_register에서 등록한 함수가 실행되지 않았다.
〈주석〉
  1. PHP 7.×까지는 __autoload 함수로도 등록할 수 있었지만, PHP 8부터는 __autoload 함수를 쓸 수 없고 spl_autoload_resigter 함수만 쓸 수 있음 back
2022/05/10 11:31 2022/05/10 11:31
글 걸기 주소 : 이 글에 다른 글을 걸 수 없습니다

덧글을 달아 주세요