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'); }
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(); } } }