get_class_vars

(PHP 4, PHP 5)

get_class_vars — Возвращает массив свойств класса с их инициализационными значенями

Описание

array get_class_vars ( string $class_name )

Функция возвращает ассоциативный массив свойств класса и их значения по-умолчанию (инициализационные значения). Массив имеет формат свойство => инициализационное значение .

Замечание: До PHP 4.2.0 неинициализируемые переменные класса не будут возвращены функцией get_class_vars().

Пример #1 Пример использования get_class_vars()

<?php

class myclass {

    var 
$var1// переменная не имеет начального значения...
    
var $var2 "xyz";
    var 
$var3 100;
    
    
// конструктор
    
function myclass() {
        
// change some properties
        
$this->var1 "foo";
        
$this->var2 "bar";
        return 
true;
    }

}

$my_class = new myclass();

$class_vars get_class_vars(get_class($my_class));

foreach (
$class_vars as $name => $value) {
    echo 
"$name : $value\n";
}

?>

выведет:

// Вплоть до PHP 4.2.0
var2 : xyz
var3 : 100

// Начиная с PHP 4.2.0
var1 :
var2 : xyz
var3 : 100

См. также get_class_methods(), get_object_vars()

Коментарии

If you want to retrieve the class vars from within the class itself, use $this.

<?php
class Foo {

    var 
$a;
    var 
$b;
    var 
$c;
    var 
$d;
    var 
$e;

    function 
GetClassVars()
    {
        return 
array_keys(get_class_vars(get_class($this))); // $this
   
}

}

$Foo = new Foo;

$class_vars $Foo->GetClassVars();

foreach (
$class_vars as $cvar)
{
    echo 
$cvar "<br />\n";
}
?>

Produces, after PHP 4.2.0, the following:

a
b
c
d
e
2003-01-23 18:23:29
http://php5.kiev.ua/manual/ru/function.get-class-vars.html
There seems to be be a function to get constants missing , i.e. get_class_constants() ... so here is a simple function for you all. Hopefully Zend will include this in the next round as a native php call, without using reflection.

<?php
   
function GetClassConstants($sClassName) {
     
$oClass = new ReflectionClass($sClassName);
      return 
$oClass->getConstants());
   }
?>
2007-11-16 11:18:38
http://php5.kiev.ua/manual/ru/function.get-class-vars.html
If you need get the child protected/private vars ignoring the parent vars, use like this:

<?php 
class childClass extends parentClass {
    private 
$login;
    private 
$password;
   
    public function 
__set($key$val) {
        if (
$key == 'password')
           
$this->$key md5($val);
        else
           
$this->$key $val;
    }
}
class 
parentClass {
    public 
$name;
    public 
$email;
   
    function 
__construct() {
       
$reflection = new ReflectionClass($this);
       
$vars array_keys($reflection->getdefaultProperties());
       
$reflection = new ReflectionClass(__CLASS__);
       
$parent_vars array_keys($reflection->getdefaultProperties());
       
       
$my_child_vars = array();
        foreach (
$vars as $key) {
            if (!
in_array($key$parent_vars)) {
               
$my_child_vars[] = $key;
            }
        }
       
       
print_r($my_child_vars);
    }
}

$child_class = new childClass();
?>
2009-11-10 13:53:32
http://php5.kiev.ua/manual/ru/function.get-class-vars.html
All 3 of get_object_vars, get_class_vars and reflection getDefaultProperties will reveal the name of the array.  For serialization I recommend:

<?php
$cName 
get_class($this);
$varTemplateget_class_vars($cName)
foreach (
$varTemplate as $name => $defaultVal) {
 
$vars[$name] = $this->$name// gets actual val.
}
?>

No scan the $vars and create serialization string how you wish.

This protects against erroneous prior deserializing in maintaining the integrity of the class template and ignoring unintended object properties.
2010-10-04 07:50:25
http://php5.kiev.ua/manual/ru/function.get-class-vars.html
Автор:
I propse following for getting Public members, always:
<?PHP
if (!function_exists("get_public_class_vars")) {
    function 
get_public_class_vars($class) {
        return 
get_class_vars($class);
    }
}
if (!
function_exists("get_public_object_vars")) {
    function 
get_public_object_vars($object) {
        return 
get_object_vars($object);
    }
}
?>

This is to mitigate the problem and a feature that get_object_vars($this) returns private members. Running it simply outside the scope will get the public.

Iterating public members only and their defaults are enormously useful in e.g. in serialization classes such as options where each public member is an serializable that is saved and loaded.
2012-01-31 00:06:31
http://php5.kiev.ua/manual/ru/function.get-class-vars.html
Автор:
I needed to get only the class static variables, leaving out instance variables.

<?php
function get_static_vars($class) {
   
$result = array();
    foreach (
get_class_vars($class) as $name => $default)
        if (isset(
$class::$$name))
           
$result[$name] = $default;
    return 
$result;
}
?>

That function returns only the public ones. The same pattern can be used inside a class, then it returns private and protected static variables, too:

<?php
static protected function get_static_vars($class NULL) {
    if (!isset(
$class)) $class get_called_class();
   
$result = array();
    foreach (
get_class_vars($class) as $name => $default)
        if (isset(
$class::$$name))
           
$result[$name] = $default;
    return 
$result;
}
?>
2012-09-09 10:02:05
http://php5.kiev.ua/manual/ru/function.get-class-vars.html
Автор:
<?php 
class someClass {
    public function 
toArray() {
       
$records = array();

        foreach( 
$this as $key => $value ) {
               
$records[$key] = $value;
        }

        return 
$records;
    }

}
?>
2015-11-16 14:43:44
http://php5.kiev.ua/manual/ru/function.get-class-vars.html

    Поддержать сайт на родительском проекте КГБ