system/Commands/Database/CreateMigration.php
public function run(array $params = [])
	{
		$name = array_shift($params);

		if (empty($name))
		{
			$name = CLI::prompt(lang('Migrations.nameMigration'));
		}

		if (empty($name))
		{
			CLI::error(lang('Migrations.badCreateName'));
			return;
		}
		$ns       = $params['-n'] ?? CLI::getOption('n');
		$homepath = APPPATH;

		if (! empty($ns))
		{
			// Get all namespaces form  PSR4 paths.
			$config     = new Autoload();
			$namespaces = $config->psr4;

			foreach ($namespaces as $namespace => $path)
			{
				if ($namespace === $ns)
				{
					$homepath = realpath($path);
					break;
				}
			}
		}
		else
		{
			$ns = 'App';
		}

		// Migrations Config
		$config = new Migrations();

		if ($config->type !== 'timestamp' && $config->type !== 'sequential')
		{
			CLI::error(lang('Migrations.invalidType', [$config->type]));
			return;
		}

		// migration Type
		if ($config->type === 'timestamp')
		{
			$fileName = date('YmdHis_') . $name;
		}
		else if ($config->type === 'sequential')
		{
			// default with 001
			$sequence = $params[0] ?? '001';
			// number must be three digits
			if (! is_numeric($sequence) || strlen($sequence) !== 3)
			{
				CLI::error(lang('Migrations.migNumberError'));
				return;
			}

			$fileName = $sequence . '_' . $name;
		}

		// full path
		$path = $homepath . '/Database/Migrations/' . $fileName . '.php';

		$template = <<<EOD
<?php namespace $ns\Database\Migrations;

use CodeIgniter\Database\Migration;

class Migration_{name} extends Migration
{
	public function up()
	{
		//
	}

	//--------------------------------------------------------------------

	public function down()
	{
		//
	}
}

EOD;
		$template = str_replace('{name}', $name, $template);

		helper('filesystem');
		if (! write_file($path, $template))
		{
			CLI::error(lang('Migrations.writeError'));
			return;
		}

		CLI::write('Created file: ' . CLI::color(str_replace($homepath, $ns, $path), 'green'));
	}
public function run(array $params = [])
	{
		$name = array_shift($params);

		if (empty($name))
		{
			$name = CLI::prompt(lang('Migrations.nameMigration'));
		}

		if (empty($name))
		{
			CLI::error(lang('Migrations.badCreateName'));
			return;
		}
		$ns       = $params['-n'] ?? CLI::getOption('n');
		$homepath = APPPATH;

		if (! empty($ns))
		{
			// Get all namespaces form  PSR4 paths.
			$config     = new Autoload();
			$namespaces = $config->psr4;

			foreach ($namespaces as $namespace => $path)
			{
				if ($namespace === $ns)
				{
					$homepath = realpath($path);
					break;
				}
			}
		}
		else
		{
			$ns = 'App';
		}

		// Migrations Config
		$config = new Migrations();

		if ($config->type !== 'timestamp' && $config->type !== 'sequential')
		{
			CLI::error(lang('Migrations.invalidType', [$config->type]));
			return;
		}

		// migration Type
		if ($config->type === 'timestamp')
		{
			$fileName = date('YmdHis_') . $name;
		}
		else if ($config->type === 'sequential')
		{
			// default with 001
			$sequence = $params[0] ?? '001';
			// number must be three digits
			if (! is_numeric($sequence) || strlen($sequence) !== 3)
			{
				CLI::error(lang('Migrations.migNumberError'));
				return;
			}

			$fileName = $sequence . '_' . $name;
		}

		// full path
		$path = $homepath . '/Database/Migrations/' . $fileName . '.php';

		$template = <<<EOD
<?php namespace $ns\Database\Migrations;

use CodeIgniter\Database\Migration;

class Migration_{name} extends Migration
{
	public function up()
	{
		//
	}

	//--------------------------------------------------------------------

	public function down()
	{
		//
	}
}

EOD;
		$template = str_replace('{name}', $name, $template);

		helper('filesystem');
		if (! write_file($path, $template))
		{
			CLI::error(lang('Migrations.writeError'));
			return;
		}

		CLI::write('Created file: ' . CLI::color(str_replace($homepath, $ns, $path), 'green'));
	}
Creates a new migration file with the current timestamp.

@param array $params