Ejemplo n.º 1
0
 /**
  * Analize all known classes and validate if all classes are available.
  */
 public function test_known_classes()
 {
     $definitions = Autoloader::instance()->getDefinitions();
     $files = [];
     foreach ($definitions as $definition) {
         $files[] = Framework::$autoloader->getFilename($definition);
     }
     $analyzer = new PhpAnalyzer();
     foreach (array_unique($files) as $filename) {
         $analyzer->open($filename);
     }
     // Check all used definitions (implements, extends, new, catch, etc)
     $failed = false;
     foreach (array_keys($analyzer->usedDefinitions) as $definition) {
         if (in_array($definition, ['Throwable'])) {
             continue;
         }
         if ($this->tryGetInfo($analyzer, $definition) == false) {
             $failed = true;
         }
     }
     if ($failed == false) {
         $this->assertTrue(true, 'All ' . count($analyzer->usedDefinitions) . ' definitions are found');
     }
 }
 /**
  * Analyze the PHP file and check all used classes and functions again the known extension mapping.
  *
  * @param string $filename
  */
 private function checkFile($filename)
 {
     $analyser = new PhpAnalyzer();
     $analyser->open($filename);
     $definitions = array_merge(array_keys($analyser->usedDefinitions), array_keys($analyser->usedFunctions));
     $extentions = [];
     foreach ($definitions as $definition) {
         $key = strtolower($definition);
         if (isset($this->definitionToExtension[$key])) {
             // function/class belongs to an extension?
             $extentions[$this->definitionToExtension[$key]] = true;
             if (function_exists($key) == false && class_exists($key) == false) {
                 $this->missingExtensions[$this->definitionToExtension[$key]] = $key;
             }
         }
     }
     foreach (array_keys($extentions) as $extention) {
         $this->extensionUsedIn[$extention][] = $filename;
     }
 }