Example #1
0
 public function versionNamespacing()
 {
     $ver = new Version('1.12.123');
     $this->assert($ver->ns() === 'One\\OneTwo\\OneTwoThree');
     $ver = new Version('1.0.0-alpha');
     $this->assert($ver->ns() === 'One\\Zero\\Zero\\Alpha');
     $ver = new Version('1.0.0-beta.1');
     $this->assert($ver->ns() === 'One\\Zero\\Zero\\Beta\\One');
     $ver = new Version('1.0.0-rc.12');
     $this->assert($ver->ns() === 'One\\Zero\\Zero\\Rc\\OneTwo');
 }
Example #2
0
 private function tryTo($version)
 {
     $versions = $this->versions();
     $version = new Version($version);
     $current = $this->version();
     $diff = $version->compare($current);
     // move to the current version if it exists, or we assume full upgrade
     if ($versions->exists($current)) {
         $versions->seek($current);
         // if we are upgrading, we must first move to the next version
         if ($diff === 1) {
             $versions->next();
         }
     }
     // so we can rollback to the current version
     $this->rollbackVersion = $current;
     // if the current version is great than the desired version, upgrade
     // otherwise if it is less than, downgrade
     if ($diff === 1) {
         while ($versions->valid() && $version->compare($versions->current()) >= 0) {
             $migrations = new MigrationIterator($this, $versions->current());
             $migrations->up();
             $versions->next();
         }
     } elseif ($diff === -1) {
         while ($versions->valid() && $version->compare($versions->current()) === -1) {
             $migrations = new MigrationIterator($this, $versions->current());
             $migrations->down();
             $versions->prev();
         }
     }
 }