Пример #1
0
 public function __construct(Nette\Loaders\RobotLoader $robotLoader)
 {
     $classes = $robotLoader->getIndexedClasses();
     foreach ($classes as $class => $file) {
         if (class_exists($class)) {
             $reflection = new \Nette\Reflection\ClassType($class);
             if ($reflection->implementsInterface('Tatami\\Modules\\IModule')) {
                 if (!($reflection->isAbstract() or $reflection->isInterface())) {
                     $this->modules[] = $this->parseModuleName($reflection->getShortName());
                 }
             }
             if ($reflection->isSubclassOf('Tatami\\Presenters\\BackendPresenter')) {
                 $moduleName = $this->parseModuleName($reflection->getNamespaceName());
                 $presenterName = $this->parsePresenterName($reflection->getShortName());
                 $this->presenters[$moduleName][] = $presenterName;
                 $methods = $reflection->getMethods(ReflectionMethod::IS_PUBLIC);
                 foreach ($methods as $method) {
                     if (Strings::match($method->name, '/action/') or Strings::match($method->name, '/render/')) {
                         $this->actions[$presenterName][] = $this->parseActionName($method->name);
                     }
                 }
             }
             unset($reflection);
         }
     }
 }
Пример #2
0
 /**
  * Find test suits to run
  * 
  * @param string $folder Where to look
  * @return string[]
  */
 protected function findSuits($folder)
 {
     $suits = [];
     $robot = new \Nette\Loaders\RobotLoader();
     $robot->setCacheStorage(new \Nette\Caching\Storages\DevNullStorage());
     $robot->addDirectory($folder);
     $robot->acceptFiles = "*.phpt";
     $robot->rebuild();
     $robot->register();
     $classes = $robot->getIndexedClasses();
     foreach ($classes as $class => $file) {
         $rc = new \Nette\Reflection\ClassType($class);
         if (!$rc->isAbstract() and $rc->isSubclassOf(TestCase::class)) {
             $suits[] = [$rc->getName(), $file];
         }
     }
     return $suits;
 }
Пример #3
0
 /**
  * @param \Venne\Module\IModule $module
  * @return array
  * @throws \Exception
  */
 protected function getAllClasses()
 {
     // find files
     $robotLoader = new \Nette\Loaders\RobotLoader();
     $robotLoader->setCacheStorage(new \Nette\Caching\Storages\MemoryStorage());
     foreach ($this->context->parameters['modules'] as $name => $item) {
         if ($item[ModuleManager::MODULE_STATUS] === ModuleManager::STATUS_INSTALLED) {
             $path = $this->context->expand($item[ModuleManager::MODULE_PATH]) . '/' . ucfirst($name) . 'Module';
             if (file_exists($path)) {
                 $robotLoader->addDirectory($path);
             }
         }
     }
     $robotLoader->register();
     $entities = $robotLoader->getIndexedClasses();
     // classes
     $classes = array();
     foreach ($entities as $class => $item) {
         if (\Nette\Reflection\ClassType::from('\\' . $class)->hasAnnotation('ORM\\Entity')) {
             $classes[] = $class;
         }
     }
     $robotLoader->unregister();
     return $classes;
 }