PHP 7.4.24 Released!

ReflectionClass Sınıfı

(PHP 5, PHP 7, PHP 8)

Giriş

ReflectionClass sınıfı bir sınıf hakkında bilgi edinilmesini sağlar.

Sınıf Sözdizimi

class ReflectionClass implements Reflector {
/* Sabitler */
const int IS_IMPLICIT_ABSTRACT = 16;
const int IS_EXPLICIT_ABSTRACT = 32;
const int IS_FINAL = 64;
/* Özellikler */
public $name;
/* Yöntemler */
public __construct(object|string $objectOrClass)
public static export(mixed $değiştirge, bool $return = false): string
public getAttributes(string $name = null, int $flags = 0): array
public getConstant(string $isim): mixed
public getConstants(?int $filter = null): array
public getDefaultProperties(): array
public getDocComment(): string|false
public getEndLine(): int|false
public getExtensionName(): string|false
public getFileName(): string|false
public getInterfaceNames(): array
public getInterfaces(): array
public getMethod(string $isim): ReflectionMethod
public getMethods(?int $süzgeç = null): array
public getModifiers(): int
public getName(): string
public getNamespaceName(): string
public getProperties(?int $süzgeç = null): array
public getProperty(string $isim): ReflectionProperty
public getReflectionConstants(?int $filter = null): array
public getShortName(): string
public getStartLine(): int|false
public getStaticProperties(): ?array
public getStaticPropertyValue(string $isim, mixed &$öntanımlı = ?): mixed
public getTraitAliases(): array
public getTraitNames(): array
public getTraits(): array
public hasConstant(string $isim): bool
public hasMethod(string $isim): bool
public hasProperty(string $isim): bool
public implementsInterface(ReflectionClass|string $interface): bool
public inNamespace(): bool
public isAbstract(): bool
public isAnonymous(): bool
public isCloneable(): bool
public isFinal(): bool
public isInstance(string $nesne): bool
public isInstantiable(): bool
public isInterface(): bool
public isInternal(): bool
public isIterable(): bool
public isSubclassOf(ReflectionClass|string $class): bool
public isTrait(): bool
public isUserDefined(): bool
public newInstance(mixed $değiştirgeler): object
public newInstanceArgs(array $değiştirgeler = []): object
public setStaticPropertyValue(string $isim, mixed $değer): void
public __toString(): string
}

Özellikler

name

Sınıfın ismi. Salt-okunur olup, yazılmaya çalışılırsa ReflectionException istisnası oluşur.

Öntanımlı Sabitler

ReflectionClass Değiştiricileri

ReflectionClass::IS_IMPLICIT_ABSTRACT

Bazı soyut yöntemler içerdiğinden sınıfın soyut olduğunu belirtir.

ReflectionClass::IS_EXPLICIT_ABSTRACT

Sınıfın tanımından dolayı soyut olduğunu belirtir.

ReflectionClass::IS_FINAL

Sınıfın bir final sınıf olduğunu belirtir.

İçindekiler

add a note add a note

User Contributed Notes 5 notes

up
32
danbettles at yahoo dot co dot uk
12 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
18
Anonymous
8 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
20
Anonymous
9 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
1
featherbits
7 months ago
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php
up
-26
YoungOfCthulhu
6 years ago
It is also possible to do reflection from within the class and get the methods for instance.

<?php

class test
{
    private
$test = "";

    public function
setTest($test)
    {
       
$this->test = $test;
        return
$this;
    }

    public function
getTest()
    {
        return
$this->test;
    }
   
    public function
run(){
       
$class = new ReflectionClass('test');
       
$methods = $class->getMethods();
       
var_dump($methods);
    }
}

Called from another php file you get the proper result:
array(
3) {
  [
0]=>
  &
object(ReflectionMethod)#3 (2) {
   
["name"]=>
   
string(8) "setTest"
   
["class"]=>
   
string(4) "test"
 
}
  [
1]=>
  &
object(ReflectionMethod)#4 (2) {
   
["name"]=>
   
string(8) "getTest"
   
["class"]=>
   
string(4) "test"
 
}
  [
2]=>
  &
object(ReflectionMethod)#5 (2) {
   
["name"]=>
   
string(3) "run"
   
["class"]=>
   
string(4) "test"
 
}
}
To Top