PHP에서, 객체가 특정 클래스에 속하는지 또는 서브 클래스의 인스턴스인지 결정하는 일반적으로 사용되는 방법 중 하나는 IS_A () 함수를 사용하는 것입니다. IS_A () 함수는 객체가 지정된 클래스의 인스턴스인지 또는 해당 클래스에서 상속되는지 여부를 감지 할 수 있습니다. 대상 클래스가 추상 클래스 이더라도이 기능은 제대로 작동합니다.
이 기사는 객체가 추상 클래스의 인스턴스인지를 결정하기 위해 IS_A ()를 사용하는 방법에 중점을 둘 것입니다. 샘플 코드는 실제 사용법과 관심 지점을 반영합니다.
IS_A () 함수의 기본 구문은 다음과 같습니다.
is_a(object $object, string $class_name, bool $allow_string = false): bool
$ 객체 : 판단 할 객체.
$ class_name : 클래스 이름 (지원 문자열 양식).
$ allow_string : 첫 번째 매개 변수를 클래스 이름 문자열, 기본값 으로 허용할지 여부.
이 함수는 부울 값 true 또는 false 를 반환하여 객체가 클래스의 인스턴스인지 또는 클래스의 서브 클래스인지를 나타냅니다.
추상 클래스 자체는 인스턴스화 될 수 없지만 상속 될 수 있습니다. 추상 클래스의 콘크리트 서브 클래스를 상속하여 생성 된 객체는 또한 추상 클래스의 사례로 간주됩니다. 따라서 개체가 추상 클래스의 인스턴스인지 판단하는 것은 실제로 객체가 추상 클래스의 서브 클래스 인스턴스인지를 결정하는 것입니다.
다음 예제는 객체가 추상 클래스의 인스턴스인지 확인하기 위해 IS_A ()를 사용하는 방법을 보여줍니다.
<?php
// 초록 클래스를 정의합니다 Animal
abstract class Animal {
abstract public function makeSound();
}
// 초록 수업을 상속합니다 Animal 특정 범주의 Dog
class Dog extends Animal {
public function makeSound() {
return "Woof!";
}
}
// 초록 수업을 상속합니다 Animal 특정 범주의 Cat
class Cat extends Animal {
public function makeSound() {
return "Meow!";
}
}
$dog = new Dog();
$cat = new Cat();
// 심판 $dog 사실입니까? Animal 추상 클래스의 예
if (is_a($dog, 'Animal')) {
echo "Dog 예 Animal 추상 클래스의 예" . PHP_EOL;
} else {
echo "Dog 不예 Animal 추상 클래스의 예" . PHP_EOL;
}
// 심판 $cat 사실입니까? Animal 추상 클래스의 예
if (is_a($cat, 'Animal')) {
echo "Cat 예 Animal 추상 클래스의 예" . PHP_EOL;
} else {
echo "Cat 不예 Animal 추상 클래스의 예" . PHP_EOL;
}
// 심판 $dog 사실입니까? Cat 수업의 예
if (is_a($dog, 'Cat')) {
echo "Dog 예 Cat 수업의 예" . PHP_EOL;
} else {
echo "Dog 不예 Cat 수업의 예" . PHP_EOL;
}
?>
실행 결과 :
Dog 예 Animal 추상 클래스의 예
Cat 예 Animal 추상 클래스의 예
Dog 不예 Cat 수업의 예
클래스 이름은 사례에 민감합니다
IS_A () 의 클래스 이름에 대한 판단은 사례에 민감합니다.
인터페이스 판단과 유사합니다
IS_A ()를 사용하여 객체가 인터페이스를 구현하는지 여부를 결정할 수도 있습니다.
줄을 지나갈 때 <br> 첫 번째 매개 변수가 객체 대신 클래스 이름 문자열 인 경우 세 번째 매개 변수를 true 로 설정해야합니다.
if (is_a('Dog', 'Animal', true)) {
echo "Dog 类예 Animal 서브 클래스" . PHP_EOL;
}
호환성
IS_A ()는 PHP 5.3에서 시작하는 세 번째 매개 변수를 지원합니다.
PHP의 IS_A () 함수를 사용하여 개체가 추상 클래스의 인스턴스인지 확인하는 것은 매우 간단하고 직관적입니다. 추상 클래스의 이름을 아는 한, 개체와 클래스 이름을 전달하여 결과를 얻으십시오. 이것은 객체 지향 프로그래밍에서 유형 판단 및 다형성 처리에 매우 유용합니다.