1. 개요 및 설치
이러한 기능을 사용하면 클래스 및 개체 인스턴스에 대한 정보를 얻을 수 있습니다. 객체가 속한 클래스 이름과 해당 멤버 속성 및 메서드를 얻을 수 있습니다. 이러한 함수를 사용하면 객체와 클래스 간의 관계뿐만 아니라 상속 관계(예: 객체 클래스가 상속받는 클래스)도 찾을 수 있습니다.
PHP에서 객체와 클래스가 어떻게 구현되고 사용되는지에 대한 자세한 설명을 보려면 객체 지향 장을 참조하세요.
이러한 기능은 PHP 코어의 일부이므로 설치가 필요하지 않습니다.
2. 클래스 및 객체 함수의 전체 목록
__autoload — 정의되지 않은 클래스 로드 시도
call_user_method_array — 매개변수 배열을 전달하는 동안 사용자 메서드 호출(구식)
call_user_method — 특정 객체에 대한 사용자 메서드 호출(사용되지 않음)
class_alias — 클래스에 대한 별칭 생성
class_exists — 클래스가 정의되었는지 확인
get_called_class — 후기 정적 바인딩("Late Static Binding") 클래스의 이름
get_class_methods — 클래스의 메서드 이름으로 구성된 배열을 반환합니다.
get_class_vars — 다음으로 구성된 배열을 반환합니다. 클래스의 기본 속성
get_class — 객체의 클래스 이름을 반환합니다.
get_declared_classes — 정의된 클래스의 이름으로 구성된 배열을 반환합니다.
get_declared_interfaces — 배열을 반환합니다. 모든 선언된 인터페이스 포함
get_declared_traits — 정의된 모든 특성의 배열을 반환합니다.
get_object_vars — 객체 속성으로 구성된 연관 배열을 반환합니다.
get_parent_class — 해당 클래스의 상위 클래스 이름을 반환합니다. 객체 또는 클래스
interface_exists — 인터페이스가 정의되었는지 확인
is_a — 객체가 이 클래스에 속하거나 클래스가 이 객체의 상위 클래스인 경우 TRUE를 반환합니다.
is_subclass_of — 이 객체가 이 클래스 클래스의 하위인 경우 TRUE를 반환합니다.
method_exists — 클래스의 메소드가 존재하는지 확인합니다.
property_exists — 객체나 클래스에
trait_exists — 지정된 특성이 존재하는지 확인3. 사용 예이 예에서는 먼저 기본 클래스와 클래스의 확장을 정의합니다. 이 기본 클래스는 식용 가능한지 여부와 색상과 관련하여 일반적인 야채를 설명합니다. 서브클래스 Spinach는 요리 방법과 요리 여부를 확인하는 또 다른 방법을 추가합니다. 예제 #1classes.inc<?php // base class with member properties and methods class Vegetable { var $edible; var $color; function Vegetable($edible, $color="green") { $this->edible = $edible; $this->color = $color; } function is_edible() { return $this->edible; } function what_color() { return $this->color; } } // end of class Vegetable // extends the base class class Spinach extends Vegetable { var $cooked = false; function Spinach() { $this->Vegetable(true, "green"); } function cook_it() { $this->cooked = true; } function is_cooked() { return $this->cooked; } } // end of class Spinach ?>
<?php include "classes.inc"; // 实用函数 function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) { echo "\t$prop = $val\n"; } } function print_methods($obj) { $arr = get_class_methods(get_class($obj)); foreach ($arr as $method) { echo "\tfunction $method()\n"; } } function class_parentage($obj, $class) { if (is_subclass_of($GLOBALS[$obj], $class)) { echo "Object $obj belongs to class " . get_class($$obj); echo " a subclass of $class\n"; } else { echo "Object $obj does not belong to a subclass of $class\n"; } } // 实例化 2 对象 $veggie = new Vegetable(true, "blue"); $leafy = new Spinach(); // 打印这些对象的信息 echo "veggie: CLASS " . get_class($veggie) . "\n"; echo "leafy: CLASS " . get_class($leafy); echo ", PARENT " . get_parent_class($leafy) . "\n"; // 显示蔬菜的属性 echo "\nveggie: Properties\n"; print_vars($veggie); // and leafy methods echo "\nleafy: Methods\n"; print_methods($leafy); echo "\nParentage:\n"; class_parentage("leafy", "Spinach"); class_parentage("leafy", "Vegetable"); ?>
[...] Parentage: Object leafy does not belong to a subclass of Spinach Object leafy belongs to class spinach a subclass of Vegetable