PHPKonf Istanbul PHP Conference 2019 - Call for Papers

ReflectionProperty Sınıfı

(PHP 5, PHP 7)


ReflectionProperty sınıfı bir sınıfın özellikleri hakkında bilgi edinilmesini sağlar.

Sınıf Sözdizimi

ReflectionProperty implements Reflector {
/* Sabitler */
const integer IS_STATIC = 1 ;
const integer IS_PUBLIC = 256 ;
const integer IS_PROTECTED = 512 ;
const integer IS_PRIVATE = 1024 ;
/* Özellikler */
public $name ;
public $class ;
/* Yöntemler */
final private void __clone ( void )
__construct ( mixed $sınıf , string $isim )
public static string export ( mixed $sınıf , string $isim [, bool $ihracet ] )
public ReflectionClass getDeclaringClass ( void )
public string getDocComment ( void )
public int getModifiers ( void )
public string getName ( void )
public mixed getValue ([ string $özellik ] )
public bool isDefault ( void )
public bool isPrivate ( void )
public bool isProtected ( void )
public bool isPublic ( void )
public bool isStatic ( void )
public void setAccessible ( bool $erişilebilir )
public void setValue ( object $nesne , mixed $değer )
public string __toString ( void )



Özelliğin ismi. Salt-okunur olup, bir yazma çabası ReflectionException istisnasına yol açar.


Özelliği tanımlayan sınıfın ismi. Salt-okunur olup, bir yazma çabası ReflectionException istisnasına yol açar.

Öntanımlı Sabitler

ReflectionProperty Değiştiricileri


Özelliğin static olduğunu belirtir.


Özelliğin public olduğunu belirtir.


Özelliğin protected olduğunu belirtir.


Özelliğin private olduğunu belirtir.


add a note add a note

User Contributed Notes 3 notes

rasmus at mindplay dot dk
8 years ago
I think a more accurate explanation is this:

The Reflection classes are designed to reflect upon the source code of an application, not on any runtime information.

I think you misunderstand the ReflectionProperty constructor in your example above. The fact that it accepts an object as argument is just a convenience feature - you are actually inspecting the class of that object, not the object itself, so it's basically equivalent to:


// works fine
$Reflection = new ReflectionProperty(get_class($a), 'a');

// throws exception
$Reflection = new ReflectionProperty(get_class($a), 'foo');


Getting the class of the object you're passing in is implied, since inspecting a defined property is the purpose of this class.

In your example, $a->foo is a dynamic member - it is not defined as a member of class, so there is no defining class reference, line number, default value, etc. - which means, there is nothing to reflect upon.

Clearly this very useful library could use some real documentation...
james at digitaledgeit dot com dot au
8 years ago
Please ignore my previous note. I didn't fully understand what the previous notes were referring to as "runtime". I now see they were referring to a slightly different question.

Nanhe Kumar
4 years ago
//serialize static properties (class variable)

class Student {

$members = array();
    public static

    public function
__construct($name = 'Nanhe Kumar') {
$this->name = $name;

    public function
__sleep() {
$vars = get_class_vars(get_class($this));
        foreach (
$vars as $key => $val) {
            if (!empty(
$this->members[$key] = $val;

    public function
__wakeup() {
        foreach (
$this->members as $key => $val) {
$prop = new ReflectionProperty(get_class($this), $key);
$prop->setValue(get_class($this), $val);
$this->members = array();

    public function
getTotalStudent() {


$so1 = new Student();
$so2 = new Student();
$serialized = serialize($so1);
print_r($serialized); //O:7:"Student":2:{s:16:"Studentmembers";a:1:{s:11:"noOfStudent";i:2;}s:7:"*name";s:11:"Nanhe Kumar";}
$unserialized = unserialize($serialized);
print_r($unserialized); //Student Object ( [members:Student:private] => Array ( ) [name:protected] => Nanhe Kumar )
echo Student::$noOfStudent; //2
To Top