lithium\analysis\Inspector::dependencies()
Gets the static and dynamic dependencies for a class or group of classes.
Parameters
-
mixed
$classesEither a string specifying a class, or a numerically indexed array of classes
-
array
$optionsOption consists of:
'type': The type of dependency to check:staticfor static dependencies,dynamicfor dynamic dependencies ornullfor both merged in the same array. Defaults tonull.
Returns
arrayAn array of the static and dynamic class dependencies or each if type is
defined in $options.
Source
public static function dependencies($classes, array $options = []) {
$defaults = ['type' => null];
$options += $defaults;
$static = $dynamic = [];
$trim = function($c) { return trim(trim($c, '\\')); };
$join = function($i) { return join('', $i); };
foreach ((array) $classes as $class) {
$data = explode("\n", file_get_contents(Libraries::path($class)));
$data = "<?php \n" . join("\n", preg_grep('/^\s*use /', $data)) . "\n ?>";
$classes = array_map($join, Parser::find($data, 'use *;', [
'return' => 'content',
'lineBreaks' => true,
'startOfLine' => true,
'capture' => ['T_STRING', 'T_NAME_QUALIFIED', 'T_NAME_FULLY_QUALIFIED']
]));
if ($classes) {
$static = array_unique(array_merge($static, array_map($trim, $classes)));
}
$classes = static::info($class . '::$_classes', ['value']);
if (isset($classes['value'])) {
$dynamic = array_merge($dynamic, array_map($trim, array_values($classes['value'])));
}
}
if (empty($options['type'])) {
return array_unique(array_merge($static, $dynamic));
}
$type = $options['type'];
return isset(${$type}) ? ${$type} : null;
}