PHP에서 IS_A () 함수는 종종 개체가 특정 클래스에 속하는지 또는 특정 클래스에서 상속되는지 여부를 결정하는 데 사용됩니다. 사용하기가 간단 해 보이지만 매개 변수, 특히 클래스 이름과 객체를 통과 할 때 혼동하기 쉽습니다. 이 기사는 클래스 이름과 객체 매개 변수를 전달하는 방법을 이해하는 데 도움이되는 IS_A () 의 올바른 사용법을 자세히 설명합니다.
IS_A () 함수의 함수는 변수가 지정된 클래스의 인스턴스인지 또는 클래스의 서브 클래스 인스턴스인지 여부를 감지하는 것입니다. 기능 프로토 타입은 다음과 같습니다.
bool is_a(object|string $object_or_class, string $class_name, bool $allow_string = false)
매개 변수 설명 :
$ object_or_class : 객체 인스턴스 또는 클래스 이름 문자열을 전달할 수 있습니다 ( $ allow_string 이 true 인 경우).
$ class_name : 문자열 형식의 대상 클래스의 이름입니다.
$ allow_string : 기본값은 False 이며 첫 번째 매개 변수 만 객체가 될 수 있음을 나타냅니다. true 로 설정되면 첫 번째 매개 변수는 클래스 이름 문자열 일 수도 있습니다.
함수는 true 또는 false를 반환합니다.
class Animal {}
class Dog extends Animal {}
$dog = new Dog();
if (is_a($dog, 'Animal')) {
echo "예 Animal 클래스 또는 하위 클래스 인스턴스";
} else {
echo "不예 Animal 수업의 예";
}
산출:
예 Animal 클래스 또는 하위 클래스 인스턴스
$ dog 는 개 클래스의 사례이고 개는 동물 의 서브 클래스이기 때문에 사실이되기 때문에 반환됩니다.
이것은 가장 일반적인 사용법이며 객체 변수와 클래스 이름 문자열을 직접 전달하십시오.
is_a($obj, 'SomeClass');
PHP 5.3.0을 사용하면 첫 번째 매개 변수를 클래스 이름 문자열로 전달할 수 있지만 세 번째 매개 변수는 true 로 설정해야합니다.
if (is_a('Dog', 'Animal', true)) {
echo "Dog 예 Animal 클래스 또는 서브 클래스";
}
산출:
Dog 예 Animal 클래스 또는 서브 클래스
이런 식으로 클래스가 다른 클래스의 서브 클래스인지 또는 인터페이스가 구현되는지 여부를 결정할 수 있습니다.
특정 시나리오에서 URL을 기반으로 해당 클래스의 인스턴스를 판단하려면 코드의 URL을 사용하고 도메인 이름을 m66.net 으로 바꿔야합니다. 예제는 다음과 같습니다.
<?php
class Page {}
class HomePage extends Page {}
$url = 'https://m66.net/home';
$pageClass = 'HomePage';
$pageInstance = new HomePage();
if (is_a($pageInstance, $pageClass)) {
echo "현재 인스턴스는 다음과 같습니다 $pageClass 친절한";
}
echo "<br>";
if (is_a($pageClass, 'Page', true)) {
echo "$pageClass 예 Page 친절한或其子친절한";
}
?>
여기서는 $ pageinstance가 홈페이지 클래스의 인스턴스인지, 문자열 클래스 이름 $ pageclass가 페이지 클래스인지 하위 클래스인지 여부를 결정하기 위해 IS_A ()를 사용합니다. 세 번째 매개 변수는 사실 이어야합니다.
첫 번째 매개 변수는 일반적으로 객체를 통과하고 두 번째 매개 변수는 클래스 이름 문자열을 통과합니다.
첫 번째 매개 변수가 클래스 이름 문자열을 전달하면 세 번째 매개 변수가 true를 전달해야합니다.
IS_A ()는 지정된 클래스인지 하위 클래스 인스턴스인지 여부를 결정합니다.