dependencies() public static method

Gets the static and dynamic dependencies for a class or group of classes.
public static dependencies ( mixed $classes, array $options = [] ) : array
$classes mixed Either a string specifying a class, or a numerically indexed array of classes
$options array Option consists of: - `'type'`: The type of dependency to check: `static` for static dependencies, `dynamic`for dynamic dependencies or `null` for both merged in the same array. Defaults to `null`.
return array An array of the static and dynamic class dependencies or each if `type` is defined in $options.
Example #1
0
 /**
  * Returns all classes directly depending on a given class.
  *
  * @param string $dependency The class name to use as a dependency.
  * @param string $exclude Regex path exclusion filter.
  * @return array Classes having a direct dependency on `$dependency`. May contain duplicates.
  */
 protected static function _affected($dependency, $exclude = null)
 {
     $exclude = $exclude ?: '/(tests|webroot|resources|libraries|plugins)/';
     $classes = Libraries::find(true, compact('exclude') + array('recursive' => true));
     $dependency = ltrim($dependency, '\\');
     $affected = array();
     foreach ($classes as $class) {
         if (isset(static::$_cachedDepends[$class])) {
             $depends = static::$_cachedDepends[$class];
         } else {
             $depends = Inspector::dependencies($class);
             $depends = array_map(function ($c) {
                 return ltrim($c, '\\');
             }, $depends);
             static::$_cachedDepends[$class] = $depends;
         }
         if (in_array($dependency, $depends)) {
             $affected[] = $class;
         }
     }
     return $affected;
 }
Example #2
0
 public function testClassDependencies()
 {
     $expected = array('Exception', 'ReflectionClass', 'ReflectionProperty', 'ReflectionException', 'SplFileObject', 'lithium\\core\\Libraries');
     $result = Inspector::dependencies($this->subject(), array('type' => 'static'));
     $this->assertEqual($expected, $result);
     $expected[] = 'lithium\\util\\Collection';
     $result = Inspector::dependencies($this->subject());
     $this->assertEqual($expected, $result);
 }