/** * Generate a migration class * * @param string $className Class name to generate * @param array $options Options for the migration class * @param string $up The code for the up function * @param string $down The code for the down function * @param boolean $return Whether or not to return the code. * If true return and false it writes the class to disk. * @return mixed */ public function generateMigrationClass($className, $options = array(), $up = null, $down = null, $return = false) { $className = Doctrine_Inflector::urlize($className); $className = str_replace('-', '_', $className); $className = Doctrine_Inflector::classify($className); if ($return || !$this->getMigrationsPath()) { return $this->buildMigrationClass($className, null, $options, $up, $down); } else { if (!$this->getMigrationsPath()) { throw new Doctrine_Migration_Exception('You must specify the path to your migrations.'); } $next = time() + $this->migration->getNextMigrationClassVersion(); $fileName = $next . '_' . Doctrine_Inflector::tableize($className) . $this->suffix; $class = $this->buildMigrationClass($className, $fileName, $options, $up, $down); $path = $this->getMigrationsPath() . DIRECTORY_SEPARATOR . $fileName; if (class_exists($className) || file_exists($path)) { $this->migration->loadMigrationClass($className); return false; } file_put_contents($path, $class); require_once $path; $this->migration->loadMigrationClass($className); return true; } }
public function loadMigrationClass($name, $path = null) { // ignores generated directory if (!is_null($path) && 'generated' === basename(dirname($path))) { return false; } return parent::loadMigrationClass($name, $path); }