/** */ public function testClassFromFileName() { $os = php_uname('s'); if (strtoupper(substr($os, 0, 3)) === 'WIN') { $filename = 'c:\\tmp\\Task\\Db\\Migrate.php'; $expected = 'Task_Db_Migrate'; $actual = Phigrate_Util_Naming::classFromFileName($filename); $this->assertEquals($expected, $actual); } else { $filename = '/tmp/Task/Db/Migrate.php'; $expected = 'Task_Db_Migrate'; $actual = Phigrate_Util_Naming::classFromFileName($filename); $this->assertEquals($expected, $actual); } }
/** * 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'); }