Exemple #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);
         }
     }
 }
Exemple #2
0
 private function findModules()
 {
     if ($this->cache->offsetExists('modules')) {
         $modules = $this->cache->offsetGet('modules');
     } else {
         $classes = $this->robotLoader->getIndexedClasses();
         $modules = array();
         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())) {
                         $module = new $class();
                         $modules[$module->getName()] = $module;
                     }
                 }
                 unset($reflection);
             }
         }
         $this->cache->offsetSet('modules', $modules);
     }
     return $modules;
 }