is_a (Object $ object, String $ class_name, bool $ allow_string = false) : bool
$ 객체 객체를 감지합니다
$ class_name 클래스 이름 문자열
객체가 클래스 또는 서브 클래스에 속한 경우 true를 반환합니다. 그렇지 않으면 False를 반환하십시오.
예:
class Animal {}
class Dog extends Animal {}
$dog = new Dog();
var_dump(is_a($dog, 'Dog')); // true
var_dump(is_a($dog, 'Animal')); // true,왜냐하면 Dog 상속 Animal
var_dump(is_a($dog, 'Cat')); // false
우리가 물체 가 개 , 고양이 또는 새 에 속하는지 여부를 결정하고 싶다고 가정 해 봅시다. 가장 일반적인 방법은 다음과 같습니다.
if (is_a($obj, 'Dog') || is_a($obj, 'Cat') || is_a($obj, 'Bird')) {
// 객체는이 세 클래스 중 하나에 속합니다
}
많은 유형의 판단이 있다면, 글을 쓰는 것이 불편하며 유지 보수에 도움이되지 않습니다.
우리는 함수를 캡슐화하고 다양한 객체 및 클래스 이름 배열을 전달할 수 있으며 함수는 객체가 이러한 클래스에 속하는지 여부를 반환합니다.
function is_a_any($object, array $classNames): bool {
foreach ($classNames as $className) {
if (is_a($object, $className)) {
return true;
}
}
return false;
}
사용의 예 :
$classes = ['Dog', 'Cat', 'Bird'];
if (is_a_any($obj, $classes)) {
echo "객체는 클래스 중 하나에 속합니다";
} else {
echo "객체는이 클래스에 속하지 않습니다";
}
PHP의 클래스 이름은 사례에 민감하지만, 엄격하기 위해서는 판단 할 때 균일하게 사례를 얻을 수 있습니다.
function is_a_any($object, array $classNames): bool {
foreach ($classNames as $className) {
if (is_a($object, $className)) {
return true;
}
}
return false;
}
실제로, IS_A () 자체는 이미 사례에 민감하지 않으므로 추가 처리를 수행 할 필요가 없습니다.
객체가 특정 인터페이스를 구현했는지 여부를 결정하려면 IS_A () 도 적용 할 수 있습니다.
<?php
class Dog {}
class Cat {}
class Bird {}
class Bulldog extends Dog {}
function is_a_any($object, array $classNames): bool {
foreach ($classNames as $className) {
if (is_a($object, $className)) {
return true;
}
}
return false;
}
$bulldog = new Bulldog();
$checkClasses = ['Cat', 'Bird', 'Dog'];
if (is_a_any($bulldog, $checkClasses)) {
echo "객체는 지정된 클래스 중 하나에 속합니다";
} else {
echo "객체는이 클래스에 속하지 않습니다";
}
실행 결과 :
객체는 지정된 클래스 중 하나에 속합니다
불독은 개의 서브 클래스이기 때문입니다.
IS_A ()는 객체가 특정 클래스 또는 하위 클래스에 속하는지 여부를 감지하는 데 사용됩니다.
여러 클래스를 판단 할 때 루프 캡슐화 기능을 사용하여 클래스 이름 배열로 전달합니다 .
유연하고 간결한 기능, 유지 관리 및 확장이 쉽습니다
이러한 기능을 캡슐화함으로써 코드는 더 우아하고 이해하기 쉽고 개발에 일반적으로 사용되는 실용적인 기술입니다.