Пример #1
0
 /**
  * @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;
 }
Пример #2
0
 /**
  * @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;
 }