/** * @return MigrationList */ public function loadMigrations() { $migration_dir = $this->config->get('directory'); if (!is_dir($migration_dir)) { throw new RuntimeError(sprintf('Given migration path is not a directory: %s', $migration_dir)); } $migration_list = new MigrationList(); $glob_expression = sprintf('%1$s%2$s[0-9]*%2$s%3$s', $migration_dir, DIRECTORY_SEPARATOR, self::GLOB_EXPRESSION); foreach (glob($glob_expression) as $migration_file) { $class_parser = new PhpClassParser(); $migration_class_info = $class_parser->parse($migration_file); $migration_class = $migration_class_info->getFullyQualifiedClassName(); if (!class_exists($migration_class)) { require_once $migration_class_info->getFilePath(); } if (!class_exists($migration_class)) { throw new RuntimeError(sprintf("Unable to load migration class %s", $migration_class)); } $class_name_parts = explode('_', $migration_class_info->getClassName()); $name = $class_name_parts[2] . (isset($class_name_parts[3]) ? $class_name_parts[3] : ''); $version = $class_name_parts[1]; $migration = $this->injector->make($migration_class, [':state' => ['name' => StringToolkit::asSnakeCase($name), 'version' => $version]]); $migration_list->addItem($migration); } return $migration_list; }
/** * @return FixtureList */ public function loadFixtures() { $fixture_dir = $this->config->get('directory'); if (!is_dir($fixture_dir)) { throw new RuntimeError(sprintf('Given fixture path is not a directory: %s', $fixture_dir)); } $fixture_list = new FixtureList(); $glob_expression = sprintf('%1$s%2$s[0-9]*%2$s%3$s', $fixture_dir, DIRECTORY_SEPARATOR, self::GLOB_EXPRESSION); foreach (glob($glob_expression) as $fixture_file) { $class_parser = new PhpClassParser(); $fixture_class_info = $class_parser->parse($fixture_file); $fixture_class = $fixture_class_info->getFullyQualifiedClassName(); if (!class_exists($fixture_class)) { require_once $fixture_class_info->getFilePath(); } if (!class_exists($fixture_class)) { throw new RuntimeError(sprintf("Unable to load fixture class %s", $fixture_class)); } $class_name_parts = explode('_', $fixture_class_info->getClassName()); $fixture = $this->service_locator->createEntity($fixture_class, [':state' => ['name' => StringToolkit::asSnakeCase($class_name_parts[2]), 'version' => $class_name_parts[1]]]); $fixture_list->addItem($fixture); } return $fixture_list; }