PHP 8.6.0 Beta 1 is available for testing

Класс ReflectionClass

(PHP 5, PHP 7, PHP 8)

Введение

Класс ReflectionClass сообщает информацию о классе.

Обзор класса

class ReflectionClass implements Reflector {
/* Константы */
public const int IS_IMPLICIT_ABSTRACT ;
public const int IS_EXPLICIT_ABSTRACT ;
public const int IS_FINAL ;
public const int IS_READONLY ;
public const int SKIP_DESTRUCTOR ;
/* Свойства */
public string $name ;
/* Методы */
public function __construct (object |string $objectOrClass)
public static function export (mixed $argument, bool $return = false ): string
public function getAttributes (? string $name = null , int $flags = 0): array
public function getConstant (string $name): mixed
public function getConstants (? int $filter = null ): array
public function getConstructor (): ? ReflectionMethod
public function getDefaultProperties (): array
public function getDocComment (): string |false
public function getEndLine (): int |false
public function getExtension (): ? ReflectionExtension
public function getExtensionName (): string |false
public function getFileName (): string |false
public function getInterfaceNames (): array
public function getInterfaces (): array
public function getLazyInitializer (object $object): ? callable
public function getMethod (string $name): ReflectionMethod
public function getMethods (? int $filter = null ): array
public function getModifiers (): int
public function getName (): string
public function getNamespaceName (): string
public function getParentClass (): ReflectionClass |false
public function getProperties (? int $filter = null ): array
public function getProperty (string $name): ReflectionProperty
public function getReflectionConstants (? int $filter = null ): array
public function getShortName (): string
public function getStartLine (): int |false
public function getStaticProperties (): array
public function getStaticPropertyValue (string $name, mixed &$default = ?): mixed
public function getTraitAliases (): array
public function getTraitNames (): array
public function getTraits (): array
public function hasConstant (string $name): bool
public function hasMethod (string $name): bool
public function hasProperty (string $name): bool
public function implementsInterface (ReflectionClass |string $interface): bool
public function initializeLazyObject (object $object): object
public function inNamespace (): bool
public function isAbstract (): bool
public function isAnonymous (): bool
public function isCloneable (): bool
public function isEnum (): bool
public function isFinal (): bool
public function isInstance (object $object): bool
public function isInstantiable (): bool
public function isInterface (): bool
public function isInternal (): bool
public function isIterable (): bool
public function isReadOnly (): bool
public function isSubclassOf (ReflectionClass |string $class): bool
public function isTrait (): bool
public function isUninitializedLazyObject (object $object): bool
public function isUserDefined (): bool
public function markLazyObjectAsInitialized (object $object): object
public function newInstance (mixed ...$args): object
public function newInstanceArgs (array $args = []): ? object
public function newLazyGhost (callable $initializer, int $options = 0): object
public function newLazyProxy (callable $factory, int $options = 0): object
public function resetAsLazyGhost (object $object, callable $initializer, int $options = 0): void
public function resetAsLazyProxy (object $object, callable $factory, int $options = 0): void
public function setStaticPropertyValue (string $name, mixed $value): void
public function __toString (): string
}

Свойства

name

Имя класса. Доступно только для чтения и выбрасывает исключение ReflectionException при попытке записи.

Предопределённые константы

Модификаторы ReflectionClass

ReflectionClass::IS_IMPLICIT_ABSTRACT int

Указывает, что класс является абстрактным, потому что он содержит абстрактные методы.

ReflectionClass::IS_EXPLICIT_ABSTRACT int

Указывает, что класс абстрактный, потому что так указали при описании класса.

ReflectionClass::IS_FINAL int

Указывает, что класс окончательный

ReflectionClass::IS_READONLY int

Указывает, что класс является readonly.

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE int
Указывает, что функция serialize() не должна вызывать инициализацию ленивого объекта.
ReflectionClass::SKIP_DESTRUCTOR int
Указывает, что деструктор объекта не должен вызываться при сбросе объекта как ленивого.

Список изменений

Версия Описание
8.4.0 Константы класса теперь типизированы.
8.0.0 Метод ReflectionClass::export() был удалён.

Содержание

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 4 notes

up
42
danbettles at yahoo dot co dot uk
17 years ago
To reflect on a namespaced class in PHP 5.3, you must always specify the fully qualified name of the class - even if you've aliased the containing namespace using a "use" statement.
So instead of:
<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('Core\Singleton');
?>

You would type:
<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('App\Core\Singleton');
?>
up
22
Anonymous
13 years ago
Reflecting an alias will give you a reflection of the resolved class.
<?php
class X {
 
}
class_alias('X','Y');
class_alias('Y','Z');
$z = new ReflectionClass('Z');
echo $z->getName(); // X
?>
up
25
Anonymous
14 years ago
Unserialized reflection class cause error.
<?php
/**
 * abc
 */
class a{}
$ref = new ReflectionClass('a');
$ref = unserialize(serialize($ref));
var_dump($ref);
var_dump($ref->getDocComment());
// object(ReflectionClass)#2 (1) {
// ["name"]=>
// string(1) "a"
// }
// PHP Fatal error: ReflectionClass::getDocComment(): Internal error: Failed to retrieve the reflection object
?>
up
5
featherbits
5 years ago
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php 
+Добавить

AltStyle によって変換されたページ (->オリジナル) /