/** * Load migration classes from the passed directory. Any file found with a .php * extension will be passed to the loadMigrationClass() * * @param string $directory Directory to load migration classes from * @return void */ public function loadMigrationClassesFromDirectory($directory = null) { $directory = $directory ? $directory : $this->_migrationClassesDirectory; self::$_migrationClassesForDirectories = array(); $this->_migrationClasses = array(); $classesToLoad = array(); $classes = get_declared_classes(); foreach ((array) $directory as $dir) { $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY); foreach ($it as $file) { $info = pathinfo($file->getFileName()); if (isset($info['extension']) && $info['extension'] == 'php') { require_once $file->getPathName(); $array = array_diff(get_declared_classes(), $classes); $className = end($array); if ($className) { $e = explode('_', $file->getFileName()); $timestamp = $e[0]; $classesToLoad[$timestamp] = array('className' => $className, 'path' => $file->getPathName()); } } } } ksort($classesToLoad); foreach ($classesToLoad as $class) { $this->loadMigrationClass($class['className'], $class['path']); } }