클래스 & 객체함수 – 01.클래스/객체 함수

PHP 스크립트에 내장되어 있는 클래스와 객체 관련 함수에 대하여 살펴보겠습니다.

클래스/객체 관련함수 목록

클래스/객체 함수(class/object function)를 이용하면 클래스와 인스턴스 객체에 대한 정보를 얻을 수 있습니다. 객체를 생성했던 클래스명 뿐만 아니라 해당 클래스의 멤버인 멤버변수와 메소드명도 얻을 수 있습니다. 이러한 함수를 이용하면 객체의 클래스 멤버 뿐만 아니라 객체의 상속관계(parentage; 객체를 생성했던 클래스가 어떤 클래스에서 확장된 것인지를 나타내는 것)를 확인할 수 있습니다. 현재(2002.6)까지 공식문서에 추가된 클래스/객체 관련 함수는 아래와 같이 총 12개가 등록되어 있습니다.

메소드명 기능 호환성
call_user_method_array 특정 객체에 포함된 사용자 정의 메소드 호출(배열인수) PHP4 >= 4.0.5
call_user_method 특정 객체에 포함된 사용자 정의 메소드 호출(가변인수리스트) PHP3 >= 3.0.3, PHP4
class_exists 클래스가 정의되어 있는지 확인 PHP4 >= 4.0b4
get_class 객체의 클래스명 반환 PHP4 >= 4.0b2
get_class_methods 클래스 메소드명 반환 PHP4 >= 4.0RC1
get_class_vars 클래스의 디폴트 멤버변수 반환 PHP4 >= 4.0RC1
get_declared_classes 현재 문서에 정의된 클래스명 반환 PHP4 >= 4.0RC2
get_object_vars 인스턴스에 의해 지정된 멤버변수 반환 PHP4 >= 4.0RC1
get_parent_class 부모클래스명을 반환 PHP4 >= 4.0b2,4.0.5
is_a 지정된 클래스로부터 생성된 객체인지 확인 PHP4 >= 4.2.0
is_subclass_of 객체가 지정된 클래스의 서브클래스에 속하는지 확인 PHP4 >= 4.0b4
method_exists 특정 클래스 메소드가 존재하는지 확인 PHP4 >= 4.0b2

사용 예제

이 예제에서는 우선 기반클래스(base class)와 기반클래스에서 확장된 클래스를 정의합니다. 기반클래스에서는 야채의 일반적인 사항, 식용인지 아닌지와 야채 색깔이 무엇인지를 기술하고 있습니다. 서브클래스 Spinach에서는 야채를 요리하기 위한 것과 야채가 요리되었는가를 확인하는 메소드를 추가하였습니다.

클래스 Vegetable와 Spinach로부터 2개의 객체를 인스턴스화하고 부모클래스를 포함하여 클래스에 대한 정보를 출력합니다. 또한 몇몇 유틸리티 함수를 정의하는데 이것들은 주로 해당 변수들을 제대로 출력하기 위한 것입니다.

위의 예제에서 주의하여야 할 한가지 중요한 것은 객체 $leafy가 Vegetable의 서브클래스인 클래스 Spinac의 인스턴스라는 것이며, 따라서 위 스크립트의 마지막 부분이 출력될 것입니다.

  • 출력결과(HTML 소스)

답글 남기기