class_exists()
PHP 내성 기능 get_class()
get_parent_class()
is_subclass_of()
ReflectionClass
- 객체의 클래스 이름을 반환하십시오
- 객체의 부모 클래스의 클래스 이름을 반환합니다 <?php class Introspection { public function description() { echo "I am a super class for the Child class.\n"; } } class Child extends Introspection { public function description() { echo "I'm " . get_class($this) , " class.\n"; echo "I'm " . get_parent_class($this) , "'s child.\n"; } } if (class_exists("Introspection")) { $introspection = new Introspection(); echo "The class name is: " . get_class($introspection) . "\n"; $introspection->description(); } if (class_exists("Child")) { $child = new Child(); $child->description(); if (is_subclass_of($child, "Introspection")) { echo "Yes, " . get_class($child) . " is a subclass of Introspection.\n"; } else { echo "No, " . get_class($child) . " is not a subclass of Introspection.\n"; } } ?>
메소드를 사용하여 주어진 클래스가 정의되었는지 여부를 결정할 수 있습니다.이 클래스는 확인할 필요한 클래스의 이름을 나타내는 문자열 매개 변수를 가져오고, 절차 중에 자동 로더가 호출되는지 여부를 나타내는 선택적 부울 값을 사용합니다. class_exists()
및 get_class()
메소드는 각각 객체의 클래스 이름 또는 부모 클래스의 클래스 이름을 반환합니다. 둘 다 객체 인스턴스를 매개 변수로 취합니다. get_parent_class()
메소드는 객체 인스턴스를 첫 번째 매개 변수로 취하고 부모 클래스 이름을 두 번째 매개 변수로 나타내는 문자열을 취하고 객체가 매개 변수로 주어진 클래스의 서브 클래스에 속하는지 여부를 반환합니다. is_subclass_of()
다음은 <🎜 🎜> 인터페이스 및 <🎜 🎜> 클래스의 정의와 위에 나열된 함수에 의해 추출 된 정보 출력을 포함하는 두 번째 예입니다. 첫 번째 예제와 마찬가지로 먼저 기능을 나열한 다음 코드를 표시합니다.
ICurrencyConverter
<<> - 선언 된 모든 클래스의 목록으로 돌아가 GBPCurrencyConverter
<🎜 🎜> <<> - 클래스 메소드의 이름을 반환합니다
- <<> - 클래스의 기본 속성을 반환 <🎜
-
<🎜 🎜> <<> - 인터페이스가
get_declared_classes()
에 정의되어 있는지 확인하십시오 <🎜 🎜> <<> - 객체가 메소드 <🎜 🎜>를 정의하는지 확인하십시오 -
위 코드의 출력은 다음과 같습니다. get_class_methods()
가 추측 한 바와 같이, 메소드는 첫 번째 예에서 논의 된 - 메소드와 매우 유사합니다. 주어진 인터페이스가 정의되었는지 여부를 결정하고 인터페이스 이름의 문자열 매개 변수와 선택적 자동 로더 부울을 취합니다.
get_class_vars()
메소드는 인수없이 정의 된 클래스의 이름을 포함하는 배열을 반환합니다. 로드 한 라이브러리에 따라 (PHP로 컴파일하거나 <🎜 🎜>/<🎜 🎜>를 사용하여로드) 다른 클래스가 존재할 수 있습니다.는 필요한 클래스를 매개 변수로 나타내는 개체 인스턴스 또는 문자열을 취하고 클래스에서 정의한 메소드 이름 배열을 반환합니다. 클래스에 정의 된 모든 속성 중 <🎜 🎜> 메소드에 의해 리턴 된 모든 속성 중에서 <🎜 🎜> 및 - 만 출력에 나타납니다. 개인 및 보호 된 속성이 건너 뜁니다.
interface_exists()
<<> PHP 반사 API - <🎜 🎜>
PHP는 반사 API를 통해 반사를 지원합니다. PHP 매뉴얼에서 볼 수 있듯이 반사 API는 내성 메커니즘보다 훨씬 관대하며 반사 작업을 완료하는 데 사용할 수있는 수많은 클래스 및 방법을 제공합니다. 클래스는 클래스, 인터페이스 및 메소드에 반사를 적용하고 모든 클래스 구성 요소에 대한 정보를 추출하는 데 사용되는 API의 주요 클래스입니다. 반사는 응용 프로그램 코드에서 쉽게 구현할 수 있으며 내성만큼 직관적입니다. 다음은 <🎜 🎜> 인터페이스와 <🎜 🎜> 및
method_exists()
클래스를 사용한 반사를 보여주는 예입니다.<?php class Introspection { public function description() { echo "I am a super class for the Child class.\n"; } } class Child extends Introspection { public function description() { echo "I'm " . get_class($this) , " class.\n"; echo "I'm " . get_parent_class($this) , "'s child.\n"; } } if (class_exists("Introspection")) { $introspection = new Introspection(); echo "The class name is: " . get_class($introspection) . "\n"; $introspection->description(); } if (class_exists("Child")) { $child = new Child(); $child->description(); if (is_subclass_of($child, "Introspection")) { echo "Yes, " . get_class($child) . " is a subclass of Introspection.\n"; } else { echo "No, " . get_class($child) . " is not a subclass of Introspection.\n"; } } ?>
로그인 후 복사로그인 후 복사위 코드의 출력은 다음과 같습니다. <🎜 🎜>
메소드는 클래스 구현의 인터페이스 이름을 포함하는 배열을 반환합니다. <🎜 🎜> 메소드는 부모 클래스의 <🎜 객체 표현을 반환 할 수 있고, 상위 클래스가 존재하지 않으면 False를 반환 할 수 있습니다.객체의 이름을 나열하려면 위 코드와 같이<code>The class name is: Introspection I am a super class for the Child class. I'm Child class. I'm Introspection's child. Yes, Child is a subclass of Introspection.</code>
로그인 후 복사메소드를 사용할 수 있습니다. 메소드는 메소드 배열을 검색하고 비트 마스크를
FAQ 섹션은 너무 길고 의사 원리 목표와 일치하지 않기 때문에 여기서 생략됩니다. 필요한 경우 FAQ 질문을 별도로 요청할 수 있습니다.getInterfaceNames()
,getParentClass()
,ReflectionClass
, ,ReflectionClass
,getName()
, getMethods()에 결합하여 가시성을 기반으로 목록을 필터링하기 위해 선택적 매개 변수로서옵니다. 반사 API는 좋은 반사 구현을 제공하여 Apigen과 같은보다 복잡한 응용 프로그램을 만들 수 있지만 추가 논의는이 기사의 목표를 넘어서고 있습니다.ReflectionMethod::IS_STATIC
요약IS_PUBLIC
IS_PROTECTED
이 기사에서는 PHP의 내성적 인 기능 및 반사 API를 사용하여 클래스, 인터페이스, 속성 및 방법에 대한 정보를 얻는 방법을 배웠습니다. 이 정보를 추출하는 목적은 런타임시 코드를 더 잘 이해하고 복잡한 응용 프로그램을 만드는 것입니다.IS_PRIVATE
IS_ABSTRACT
(Fotolia의 그림)IS_FINAL
(PHP의 내성 및 반사시 FAQ)