현재 위치: > 최신 기사 목록> 객체가 여러 클래스에 속하는지 여부를 결정하기 위해 IS_A ()를 사용하는 방법? 포장 방법에 대한 자세한 설명

객체가 여러 클래스에 속하는지 여부를 결정하기 위해 IS_A ()를 사용하는 방법? 포장 방법에 대한 자세한 설명

M66 2025-06-28

1. IS_A () 함수에 대한 간단한 검토

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

2. 다중 범주 판단에 대한 요구 사항

우리가 물체 가 개 , 고양이 또는 에 속하는지 여부를 결정하고 싶다고 가정 해 봅시다. 가장 일반적인 방법은 다음과 같습니다.

 if (is_a($obj, 'Dog') || is_a($obj, 'Cat') || is_a($obj, 'Bird')) {
    // 객체는이 세 클래스 중 하나에 속합니다
}

많은 유형의 판단이 있다면, 글을 쓰는 것이 불편하며 유지 보수에 도움이되지 않습니다.


3. 일반적인 기능을 캡슐화하십시오

우리는 함수를 캡슐화하고 다양한 객체 및 클래스 이름 배열을 전달할 수 있으며 함수는 객체가 이러한 클래스에 속하는지 여부를 반환합니다.

 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 "객체는이 클래스에 속하지 않습니다";
}

4. 추가 향상 - 사례 무감각 클래스 이름 및 인터페이스 판단 지원

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 () 도 적용 할 수 있습니다.


5. 예제와 함께 완전한 코드를 보여줍니다

 <?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 "객체는이 클래스에 속하지 않습니다";
}

실행 결과 :

 객체는 지정된 클래스 중 하나에 속합니다

불독은 개의 서브 클래스이기 때문입니다.


6. 요약

  • IS_A ()는 객체가 특정 클래스 또는 하위 클래스에 속하는지 여부를 감지하는 데 사용됩니다.

  • 여러 클래스를 판단 할 때 루프 캡슐화 기능을 사용하여 클래스 이름 배열로 전달합니다 .

  • 유연하고 간결한 기능, 유지 관리 및 확장이 쉽습니다

이러한 기능을 캡슐화함으로써 코드는 더 우아하고 이해하기 쉽고 개발에 일반적으로 사용되는 실용적인 기술입니다.