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|null

Source

						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));
	}