Extends
lithium\core\StaticObject
Returns various information on the properties of an object.
Parameters
- mixed $class A string class name or an object instance, from which to get methods.
- array $options Set of options: -'self': If true (default), only returns properties defined in `$class`, excluding properties from inherited classes.
Returns
mixed object lithium\analysis\Inspector._items.map|nullSource
public static function properties($class, array $options = array()) {
$defaults = array('properties' => array(), 'self' => true);
$options += $defaults;
if (!(is_object($class) && $class instanceof ReflectionClass)) {
try {
$class = new ReflectionClass($class);
} catch (ReflectionException $e) {
return null;
}
}
$options += array('names' => $options['properties']);
return static::_items($class, 'getProperties', $options)->map(function($item) {
$class = __CLASS__;
$modifiers = array_values($class::invokeMethod('_modifiers', array($item)));
$setAccess = (
array_intersect($modifiers, array('private', 'protected')) != array()
);
if ($setAccess) {
$item->setAccessible(true);
}
$result = compact('modifiers') + array(
'docComment' => $item->getDocComment(),
'name' => $item->getName(),
'value' => $item->getValue($item->getDeclaringClass())
);
if ($setAccess) {
$item->setAccessible(false);
}
return $result;
}, array('collect' => false));
}