downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ReflectionClass::getProperty> <ReflectionClass::getParentClass
Last updated: Fri, 30 Oct 2009

view this page in

ReflectionClass::getProperties

(PHP 5)

ReflectionClass::getPropertiesGets properties

Beschreibung

public ReflectionProperty ReflectionClass::getProperties ([ string $filter ] )

Gets the properties.

Warnung

Diese Funktion ist bis jetzt nicht dokumentiert. Es steht nur die Liste der Argumente zur Verfügung.

Parameter-Liste

filter

The optional filter.

Rückgabewerte

A ReflectionProperty.

Siehe auch



add a note add a note User Contributed Notes
ReflectionClass::getProperties
Jeff Hunter
10-Oct-2009 12:30
It appears the filter parameter accepts a long value that is one of ReflectionProperty::IS_STATIC, ReflectionProperty::IS_PUBLIC, ReflectionProperty::IS_PROTECTED, or ReflectionProperty::IS_PRIVATE as a way to limit the returned properties.  Flags may be combined by adding them together.

Example:

<?php
class Foo {
  public
$alpha = 1;
  protected
$beta = 2;
  private
$gamma = 3;

  public function
listProperties() {
   
$reflect = new ReflectionObject($this);
    foreach (
$reflect->getProperties(ReflectionProperty::IS_PUBLIC + ReflectionProperty::IS_PROTECTED) as $prop) {
      print
$prop->getName() . "\n";
    }
  }
}

$foo = new Foo();
$foo->listProperties();
?>

will output:

  alpha
  beta
mcurtis
28-Jan-2009 10:41
It should be noted that the 'filter' parameter in the getProperties(filter) method is expected to be of type long.  Not sure why, but it doesn't function as a way of passing in a string to fetch a subset of properties by string match.
muratyaman at gmail dot com
22-Jan-2009 03:47
Some may find this useful.

<?php
/**
 * Recursive function to get an associative array of class properties by property name => ReflectionProperty() object
 * including inherited ones from extended classes
 * @param string $className Class name
 * @param string $types Any combination of <b>public, private, protected, static</b>
 * @return array
 */
function getClassProperties($className, $types='public'){
   
$ref = new ReflectionClass($className);
   
$props = $ref->getProperties();
   
$props_arr = array();
    foreach(
$props as $prop){
       
$f = $prop->getName();
       
        if(
$prop->isPublic() and (stripos($types, 'public') === FALSE)) continue;
        if(
$prop->isPrivate() and (stripos($types, 'private') === FALSE)) continue;
        if(
$prop->isProtected() and (stripos($types, 'protected') === FALSE)) continue;
        if(
$prop->isStatic() and (stripos($types, 'static') === FALSE)) continue;
       
       
$props_arr[$f] = $prop;
    }
    if(
$parentClass = $ref->getParentClass()){
       
$parent_props_arr = getClassProperties($parentClass->getName());//RECURSION
       
if(count($parent_props_arr) > 0)
           
$props_arr = array_merge($parent_props_arr, $props_arr);
    }
    return
$props_arr;
}

//USAGE

class A{
  public
$a1;
   
    function
abc(){
       
//do something
   
}
}

class
AA extends A{
    public
$a2;
   
    function
edf(){
       
//do something
   
}
}

class
AAA extends AA{
 
//may not have extra properties, but may have extra methods
   
function ghi(){
       
//ok
   
}
}

//$ref = new ReflectionClass('AAA'); $props = $ref->getProperties();//This will get no properties!
$props_arr = getClassProperties('AAA', 'public');//Use this
var_dump($props_arr);
/*
OUTPUT on PHP5.2.6:
array
  'a1' =>
    object(ReflectionProperty)[4]
      public 'name' => string 'a1' (length=2)
      public 'class' => string 'AAA' (length=3)
  'a2' =>
    object(ReflectionProperty)[3]
      public 'name' => string 'a2' (length=2)
      public 'class' => string 'AAA' (length=3)

*/

?>
david dot thalmann at gmail dot com
06-Jan-2009 04:19
With PHP 5.3 protected or private properties are easy to access with setAccessible(). However, it's sometimes needed (e.g. Unit Tests) and here is a workaround for getValue():

<?php

$class
= new ReflectionClass('SomeClass');
$props = $class->getProperties();
// $propsStatic = $class->getStaticProperties();

$myPrivatePropertyValue = $props['aPrivateProperty'];

?>

Note that it wont work if you access the property directly with getProperty().

 
show source | credits | sitemap | contact | advertising | mirror sites