migrationFileBuilder = $migrationFileBuilder; $this->logger = $logger; } /** * @param array $queriesByVersion */ public function write( string $path, string $direction, array $queriesByVersion, ?DateTimeInterface $now = null ): bool { $now = $now ?? new DateTimeImmutable(); $string = $this->migrationFileBuilder ->buildMigrationFile($queriesByVersion, $direction, $now); $path = $this->buildMigrationFilePath($path, $now); $this->logger->info('Writing migration file to "{path}"', ['path' => $path]); return file_put_contents($path, $string) !== false; } private function buildMigrationFilePath(string $path, DateTimeInterface $now): string { if (is_dir($path)) { $path = realpath($path); $path .= '/doctrine_migration_' . $now->format('YmdHis') . '.sql'; } return $path; } }