lithium\analysis\Inspector::_items()
Helper method to get an array of ReflectionMethod or ReflectionProperty objects, wrapped
in a Collection object, and filtered based on a set of options.
Parameters
-
ReflectionClass
$classA reflection class instance from which to fetch.
-
string
$methodA getter method to call on the
ReflectionClassinstance, which will return an array of items, i.e.'getProperties'or'getMethods'. -
array
$optionsThe options used to filter the resulting method list.
'names': array of properties for filtering the result.'self': If true (default), only returns properties defined in$class, excluding properties from inherited classes.'public': If true (default) forces the property to be recognized as public.
Returns
objectReturns a Collection object instance containing the results of the items
returned from the call to the method specified in $method, after being passed
through the filters specified in $options.
Source
protected static function _items($class, $method, $options) {
$defaults = ['names' => [], 'self' => true, 'public' => true];
$options += $defaults;
$params = [
'getProperties' => ReflectionProperty::IS_PUBLIC | (
$options['public'] ? 0 : ReflectionProperty::IS_PROTECTED
)
];
$data = isset($params[$method]) ? $class->{$method}($params[$method]) : $class->{$method}();
if (!empty($options['names'])) {
$data = array_filter($data, function($item) use ($options) {
return in_array($item->getName(), (array) $options['names']);
});
}
if ($options['self']) {
$data = array_filter($data, function($item) use ($class) {
return ($item->getDeclaringClass()->getName() === $class->getName());
});
}
if ($options['public']) {
$data = array_filter($data, function($item) { return $item->isPublic(); });
}
return Libraries::instance(null, 'collection', compact('data'), static::$_classes);
}