connection = $connection; $this->files = $files ?: new Filesystem; $this->processFactory = $processFactory ?: function (...$arguments) { return Process::fromShellCommandline(...$arguments)->setTimeout(null); }; $this->handleOutputUsing(function () { // }); } /** * Dump the database's schema into a file. * * @param \Illuminate\Database\Connection $connection * @param string $path * @return void */ abstract public function dump(Connection $connection, $path); /** * Load the given schema file into the database. * * @param string $path * @return void */ abstract public function load($path); /** * Create a new process instance. * * @param mixed ...$arguments * @return \Symfony\Component\Process\Process */ public function makeProcess(...$arguments) { return call_user_func($this->processFactory, ...$arguments); } /** * Specify the name of the application's migration table. * * @param string $table * @return $this */ public function withMigrationTable(string $table) { $this->migrationTable = $table; return $this; } /** * Specify the callback that should be used to handle process output. * * @param callable $output * @return $this */ public function handleOutputUsing(callable $output) { $this->output = $output; return $this; } }