예제 #1
0
 /**
  */
 public function testTaskFromClassName()
 {
     $className = 'Task_DB_Migrate';
     $expected = 'db:migrate';
     $actual = Phigrate_Util_Naming::taskFromClassName($className);
     $this->assertEquals($expected, $actual);
     try {
         Phigrate_Util_Naming::taskFromClassName('Db_Migrate');
         $this->fail('The class name must be start with ' . Phigrate_Util_Naming::CLASS_NS_PREFIX);
     } catch (Phigrate_Exception_Argument $e) {
         $msg = 'The class name must start with ' . Phigrate_Util_Naming::CLASS_NS_PREFIX;
         $this->assertEquals($msg, $e->getMessage());
     }
 }
예제 #2
0
파일: Manager.php 프로젝트: azema/phigrate
 /**
  * load all tasks
  *
  * @return void
  * @throws Phigrate_Exception_Argument
  */
 private function _loadAllTasks()
 {
     $this->_logger->debug(__METHOD__ . ' Start');
     if (!isset($this->_tasksDir)) {
         $msg = 'Please: you must specify the directory of tasks!';
         $this->_logger->err($msg);
         throw new Phigrate_Exception_Argument($msg);
     }
     foreach ($this->_tasksDir as $index => $taskDir) {
         $namespaces = scandir($taskDir);
         $this->_logger->debug('Tasks dir[' . $index . ']: ' . $taskDir);
         //$this->_tasks = array();
         foreach ($namespaces as $namespace) {
             //skip over invalid files
             if ($namespace == '.' || $namespace == '..' || !is_dir($taskDir . '/' . $namespace)) {
                 continue;
             }
             $this->_logger->debug('Namespace: ' . $namespace);
             $files = scandir($taskDir . '/' . $namespace);
             foreach ($files as $file) {
                 $ext = substr($file, -4);
                 //skip over invalid files
                 if ($file == '.' || $file == '..' || $ext != '.php') {
                     continue;
                 }
                 $this->_logger->debug('include ' . $namespace . '/' . $file);
                 require_once $taskDir . '/' . $namespace . '/' . $file;
                 $class = Phigrate_Util_Naming::classFromFileName($taskDir . '/' . $namespace . '/' . $file);
                 $refl = new ReflectionClass($class);
                 if ($refl->isInstantiable()) {
                     $this->_logger->debug('className ' . $class);
                     $taskName = Phigrate_Util_Naming::taskFromClassName($class);
                     $this->_logger->debug('TaskName: ' . $taskName);
                     $taskObj = new $class($this->getAdapter());
                     $this->_logger->debug('obj: ' . get_class($taskObj));
                     $this->registerTask($taskName, $taskObj);
                 }
             }
         }
     }
     $this->_logger->debug(__METHOD__ . ' End');
 }