현재 위치: > 최신 기사 목록> IS_A () 및 get_parent_class ()를 사용하여 부모 클래스 유형을 결정합니다.

IS_A () 및 get_parent_class ()를 사용하여 부모 클래스 유형을 결정합니다.

M66 2025-05-26

객체 지향 프로그래밍 (OOP)은 PHP의 매우 중요한 부분입니다. 객체가 특정 클래스 또는 부모 클래스에 속하는지 여부를 결정하는 것은 일일 개발에서 일반적인 요구 사항입니다. PHP는이 기능을 달성하는 데 도움이되도록 매우 실용적인 내장 기능 IS_A ()get_parent_class () 를 제공합니다. 이 기사는이 두 기능의 사용법을 자세히 소개하고 객체가 특정 부모 클래스 또는 상속 시스템에 속하는지 여부를 결정하는 방법을 통해 예제를 보여줍니다.

1. IS_A () 함수 소개

IS_A () 함수는 객체가 특정 클래스의 인스턴스인지 또는 해당 클래스의 서브 클래스 인스턴스인지를 결정하는 데 사용됩니다. 기능 프로토 타입은 다음과 같습니다.

 bool is_a(object $object, string $class_name, bool $allow_string = false)
  • $ 객체 : 감지 해야하는 객체 인스턴스.

  • $ class_name : 지정된 클래스 이름 (문자열).

  • $ allow_string : 선택적 매개 변수, 기본값에서 false 로, 첫 번째 매개 변수를 클래스 이름 문자열에 전달할 수 있는지 여부 (개체가 아님).

$ 객체가 $ class_name 의 인스턴스이거나 서브 클래스의 인스턴스 인 경우 true 를 반환하십시오.

예:

 <?php
class Animal {}
class Dog extends Animal {}

$dog = new Dog();

var_dump(is_a($dog, 'Animal'));  // bool(true)
var_dump(is_a($dog, 'Dog'));     // bool(true)
var_dump(is_a($dog, 'Cat'));     // bool(false)
?>

위의 예에서, $ Dog는 클래스의 인스턴스이며, 개는 동물 의 서브 클래스이므로 $ Dog가 동물 유형인지 판단 할 때 사실이 반환됩니다.

2. get_parent_class () 함수 소개

get_parent_class ()는 클래스 또는 객체의 부모 클래스 이름을 얻는 데 사용됩니다. 클래스에 상위 클래스가없는 경우 False가 반환됩니다.

기능 프로토 타입 :

 string|false get_parent_class(object|string $class)
  • 매개 변수는 객체 인스턴스 또는 클래스 이름 문자열 일 수 있습니다.

get_parent_class ()를 재귀 적으로 호출함으로써 객체가 특정 상속 체인에 있는지 여부를 결정할 수 있습니다.

예:

 <?php
class Vehicle {}
class Car extends Vehicle {}
class SportsCar extends Car {}

$sportsCar = new SportsCar();

$parent = get_parent_class($sportsCar);  // Car

while ($parent !== false) {
    echo $parent . PHP_EOL;
    $parent = get_parent_class($parent);
}
// 산출:
// Car
// Vehicle
?>

3. 결합 된 사용 예 : 객체가 특정 상속 시스템에 속하는지 결정

객체가 차량 클래스에 속하는지 또는 서브 클래스의 인스턴스인지 확인하려면 get_parent_class () 와 함께 재귀 체크를 수행 할 수 있습니다.

 <?php
function isInstanceOfParent($object, $parentClass) {
    $class = get_class($object);
    if ($class === $parentClass) {
        return true;
    }

    while ($parent = get_parent_class($class)) {
        if ($parent === $parentClass) {
            return true;
        }
        $class = $parent;
    }
    return false;
}

class Vehicle {}
class Car extends Vehicle {}
class SportsCar extends Car {}

$sportsCar = new SportsCar();

var_dump(isInstanceOfParent($sportsCar, 'Vehicle'));  // bool(true)
var_dump(isInstanceOfParent($sportsCar, 'Car'));      // bool(true)
var_dump(isInstanceOfParent($sportsCar, 'Animal'));   // bool(false)
?>

4. 요약

  • IS_A ()는 객체가 특정 클래스인지 하위 클래스인지 여부를 결정하는 간결한 방법이며 직접적인 판단에 적합합니다.

  • get_parent_class ()는 클래스의 부모 클래스 정보를 얻는 데 적합하며보다 복잡한 상속 체인을 재귀 적으로 판단하는 데 사용될 수 있습니다.

  • 대부분의 시나리오에서 IS_A ()를 사용하는 것은 간단하고 효율적입니다.

  • get_parent_class ()를 결합하면보다 유연한 상속 관계 판단 논리를 달성 할 수 있습니다.

이 두 기능을 마스터하면 객체의 유형 및 상속 구조를 더 잘 제어하고 확인하고 코드의 견고성과 유지 관리를 향상시키는 데 도움이됩니다.