/** * @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; }