diff --git a/composer.json b/composer.json
index 7d275e5..84a5881 100644
--- a/composer.json
+++ b/composer.json
@@ -1,9 +1,13 @@
{
- "name": "topthink/think-migration",
+ "name": "zyimm/think-migration",
"authors": [
{
"name": "yunwuxin",
"email": "448901948@qq.com"
+ },
+ {
+ "name": "zyimm",
+ "email": "zyimm@qq.com"
}
],
"license": "Apache-2.0",
@@ -17,6 +21,12 @@
]
},
"require": {
- "topthink/framework": "5.1.*"
+ "php": ">=7.0",
+ "topthink/framework": "5.1.*"
+ },
+ "config": {
+ "allow-plugins": {
+ "topthink/think-installer": true
+ }
}
}
diff --git a/phinx/src/Phinx/Db/Table.php b/phinx/src/Phinx/Db/Table.php
index b0e7202..4f7e64e 100644
--- a/phinx/src/Phinx/Db/Table.php
+++ b/phinx/src/Phinx/Db/Table.php
@@ -26,12 +26,15 @@
* @package Phinx
* @subpackage Phinx\Db
*/
+
namespace Phinx\Db;
-use Phinx\Db\Table\Column;
-use Phinx\Db\Table\Index;
-use Phinx\Db\Table\ForeignKey;
+use InvalidArgumentException;
use Phinx\Db\Adapter\AdapterInterface;
+use Phinx\Db\Table\Column;
+use Phinx\Db\Table\ForeignKey;
+use Phinx\Db\Table\Index;
+use RuntimeException;
/**
*
@@ -47,7 +50,7 @@ class Table
/**
* @var array
*/
- protected $options = array();
+ protected $options = [];
/**
* @var AdapterInterface
@@ -57,31 +60,31 @@ class Table
/**
* @var array
*/
- protected $columns = array();
+ protected $columns = [];
/**
* @var array
*/
- protected $indexes = array();
+ protected $indexes = [];
/**
* @var ForeignKey[]
*/
- protected $foreignKeys = array();
+ protected $foreignKeys = [];
/**
* @var array
*/
- protected $data = array();
+ protected $data = [];
/**
* Class Constuctor.
*
- * @param string $name Table Name
- * @param array $options Options
+ * @param string $name Table Name
+ * @param array $options Options
* @param AdapterInterface $adapter Database Adapter
*/
- public function __construct($name, $options = array(), AdapterInterface $adapter = null)
+ public function __construct(string $name, array $options = [], AdapterInterface $adapter = null)
{
$this->setName($name);
$this->setOptions($options);
@@ -95,9 +98,10 @@ class Table
* Sets the table name.
*
* @param string $name Table Name
+ *
* @return Table
*/
- public function setName($name)
+ public function setName(string $name): Table
{
$this->name = $name;
return $this;
@@ -108,7 +112,7 @@ class Table
*
* @return string
*/
- public function getName()
+ public function getName(): string
{
return $this->name;
}
@@ -117,9 +121,10 @@ class Table
* Sets the table options.
*
* @param array $options
+ *
* @return Table
*/
- public function setOptions($options)
+ public function setOptions(array $options): Table
{
$this->options = $options;
return $this;
@@ -130,7 +135,7 @@ class Table
*
* @return array
*/
- public function getOptions()
+ public function getOptions(): array
{
return $this->options;
}
@@ -139,9 +144,10 @@ class Table
* Sets the database adapter.
*
* @param AdapterInterface $adapter Database Adapter
+ *
* @return Table
*/
- public function setAdapter(AdapterInterface $adapter)
+ public function setAdapter(AdapterInterface $adapter): Table
{
$this->adapter = $adapter;
return $this;
@@ -152,7 +158,7 @@ class Table
*
* @return AdapterInterface
*/
- public function getAdapter()
+ public function getAdapter(): AdapterInterface
{
return $this->adapter;
}
@@ -162,7 +168,7 @@ class Table
*
* @return boolean
*/
- public function exists()
+ public function exists(): bool
{
return $this->getAdapter()->hasTable($this->getName());
}
@@ -181,9 +187,10 @@ class Table
* Renames the database table.
*
* @param string $newTableName New Table Name
+ *
* @return Table
*/
- public function rename($newTableName)
+ public function rename(string $newTableName): Table
{
$this->getAdapter()->renameTable($this->getName(), $newTableName);
$this->setName($newTableName);
@@ -194,13 +201,14 @@ class Table
* Sets an array of columns waiting to be committed.
* Use setPendingColumns
*
- * @deprecated
* @param array $columns Columns
+ *
* @return Table
+ * @deprecated
*/
- public function setColumns($columns)
+ public function setColumns(array $columns): Table
{
- $this->setPendingColumns($columns);
+ return $this->setPendingColumns($columns);
}
/**
@@ -208,7 +216,7 @@ class Table
*
* @return Column[]
*/
- public function getColumns()
+ public function getColumns(): array
{
return $this->getAdapter()->getColumns($this->getName());
}
@@ -217,9 +225,10 @@ class Table
* Sets an array of columns waiting to be committed.
*
* @param array $columns Columns
+ *
* @return Table
*/
- public function setPendingColumns($columns)
+ public function setPendingColumns(array $columns): Table
{
$this->columns = $columns;
return $this;
@@ -230,7 +239,7 @@ class Table
*
* @return Column[]
*/
- public function getPendingColumns()
+ public function getPendingColumns(): array
{
return $this->columns;
}
@@ -239,9 +248,10 @@ class Table
* Sets an array of columns waiting to be indexed.
*
* @param array $indexes Indexes
+ *
* @return Table
*/
- public function setIndexes($indexes)
+ public function setIndexes(array $indexes): Table
{
$this->indexes = $indexes;
return $this;
@@ -252,7 +262,7 @@ class Table
*
* @return array
*/
- public function getIndexes()
+ public function getIndexes(): array
{
return $this->indexes;
}
@@ -261,9 +271,10 @@ class Table
* Sets an array of foreign keys waiting to be commited.
*
* @param ForeignKey[] $foreignKeys foreign keys
+ *
* @return Table
*/
- public function setForeignKeys($foreignKeys)
+ public function setForeignKeys(array $foreignKeys): Table
{
$this->foreignKeys = $foreignKeys;
return $this;
@@ -274,7 +285,7 @@ class Table
*
* @return array|ForeignKey[]
*/
- public function getForeignKeys()
+ public function getForeignKeys(): array
{
return $this->foreignKeys;
}
@@ -283,9 +294,10 @@ class Table
* Sets an array of data to be inserted.
*
* @param array $data Data
+ *
* @return Table
*/
- public function setData($data)
+ public function setData(array $data): Table
{
$this->data = $data;
return $this;
@@ -296,22 +308,22 @@ class Table
*
* @return array
*/
- public function getData()
+ public function getData(): array
{
return $this->data;
}
/**
- * Resets all of the pending table changes.
+ * Resets all the pending table changes.
*
* @return void
*/
public function reset()
{
- $this->setPendingColumns(array());
- $this->setIndexes(array());
- $this->setForeignKeys(array());
- $this->setData(array());
+ $this->setPendingColumns([]);
+ $this->setIndexes([]);
+ $this->setForeignKeys([]);
+ $this->setData([]);
}
/**
@@ -323,17 +335,18 @@ class Table
* Valid options can be: limit, default, null, precision or scale.
*
* @param string|Column $columnName Column Name
- * @param string $type Column Type
- * @param array $options Column Options
- * @throws \RuntimeException
- * @throws \InvalidArgumentException
+ * @param string|null $type Column Type
+ * @param array $options Column Options
+ *
* @return Table
+ * @throws InvalidArgumentException
+ * @throws RuntimeException
*/
- public function addColumn($columnName, $type = null, $options = array())
+ public function addColumn($columnName, string $type = null, array $options = []): Table
{
// we need an adapter set to add a column
if (null === $this->getAdapter()) {
- throw new \RuntimeException('An adapter must be specified to add a column.');
+ throw new RuntimeException('An adapter must be specified to add a column.');
}
// create a new column object if only strings were supplied
@@ -348,7 +361,7 @@ class Table
// Delegate to Adapters to check column type
if (!$this->getAdapter()->isValidColumnType($column)) {
- throw new \InvalidArgumentException(sprintf(
+ throw new InvalidArgumentException(sprintf(
'An invalid column type "%s" was specified for column "%s".',
$column->getType(),
$column->getName()
@@ -363,9 +376,10 @@ class Table
* Remove a table column.
*
* @param string $columnName Column Name
+ *
* @return Table
*/
- public function removeColumn($columnName)
+ public function removeColumn(string $columnName): Table
{
$this->getAdapter()->dropColumn($this->getName(), $columnName);
return $this;
@@ -376,9 +390,10 @@ class Table
*
* @param string $oldName Old Column Name
* @param string $newName New Column Name
+ *
* @return Table
*/
- public function renameColumn($oldName, $newName)
+ public function renameColumn(string $oldName, string $newName): Table
{
$this->getAdapter()->renameColumn($this->getName(), $oldName, $newName);
return $this;
@@ -390,9 +405,10 @@ class Table
* @param string $columnName Column Name
* @param string|Column $newColumnType New Column Type
* @param array $options Options
+ *
* @return Table
*/
- public function changeColumn($columnName, $newColumnType, $options = array())
+ public function changeColumn(string $columnName, $newColumnType, array $options = []): Table
{
// create a column object if one wasn't supplied
if (!$newColumnType instanceof Column) {
@@ -416,10 +432,11 @@ class Table
* Checks to see if a column exists.
*
* @param string $columnName Column Name
- * @param array $options Options
+ * @param array $options Options
+ *
* @return boolean
*/
- public function hasColumn($columnName, $options = array())
+ public function hasColumn(string $columnName, array $options = []): bool
{
return $this->getAdapter()->hasColumn($this->getName(), $columnName, $options);
}
@@ -430,16 +447,17 @@ class Table
* In $options you can specific unique = true/false or name (index name).
*
* @param string|array|Index $columns Table Column(s)
- * @param array $options Index Options
+ * @param array $options Index Options
+ *
* @return Table
*/
- public function addIndex($columns, $options = array())
+ public function addIndex($columns, array $options = []): Table
{
- // create a new index object if strings or an array of strings were supplied
+ // create a new index object if strings or an array of strings is supplied
if (!$columns instanceof Index) {
$index = new Index();
if (is_string($columns)) {
- $columns = array($columns); // str to array
+ $columns = [$columns]; // str to array
}
$index->setColumns($columns);
$index->setOptions($options);
@@ -456,9 +474,10 @@ class Table
*
* @param array $columns Columns
* @param array $options Options
+ *
* @return Table
*/
- public function removeIndex($columns, $options = array())
+ public function removeIndex(array $columns, array $options = []): Table
{
$this->getAdapter()->dropIndex($this->getName(), $columns, $options);
return $this;
@@ -468,9 +487,10 @@ class Table
* Removes the given index identified by its name from a table.
*
* @param string $name Index name
+ *
* @return Table
*/
- public function removeIndexByName($name)
+ public function removeIndexByName(string $name): Table
{
$this->getAdapter()->dropIndexByName($this->getName(), $name);
return $this;
@@ -480,12 +500,12 @@ class Table
* Checks to see if an index exists.
*
* @param string|array $columns Columns
- * @param array $options Options
+ *
* @return boolean
*/
- public function hasIndex($columns, $options = array())
+ public function hasIndex($columns): bool
{
- return $this->getAdapter()->hasIndex($this->getName(), $columns, $options);
+ return $this->getAdapter()->hasIndex($this->getName(), $columns);
}
/**
@@ -494,22 +514,23 @@ class Table
* In $options you can specify on_delete|on_delete = cascade|no_action ..,
* on_update, constraint = constraint name.
*
- * @param string|array $columns Columns
+ * @param string|array $columns Columns
* @param string|Table $referencedTable Referenced Table
* @param string|array $referencedColumns Referenced Columns
- * @param array $options Options
+ * @param array $options Options
+ *
* @return Table
*/
- public function addForeignKey($columns, $referencedTable, $referencedColumns = array('id'), $options = array())
+ public function addForeignKey($columns, $referencedTable, $referencedColumns = ['id'], array $options = []): Table
{
if (is_string($referencedColumns)) {
- $referencedColumns = array($referencedColumns); // str to array
+ $referencedColumns = [$referencedColumns]; // str to array
}
$fk = new ForeignKey();
if ($referencedTable instanceof Table) {
$fk->setReferencedTable($referencedTable);
} else {
- $fk->setReferencedTable(new Table($referencedTable, array(), $this->adapter));
+ $fk->setReferencedTable(new Table($referencedTable, [], $this->adapter));
}
$fk->setColumns($columns)
->setReferencedColumns($referencedColumns)
@@ -523,16 +544,17 @@ class Table
* Removes the given foreign key from the table.
*
* @param string|array $columns Column(s)
- * @param null|string $constraint Constraint names
+ * @param string|null $constraint Constraint names
+ *
* @return Table
*/
- public function dropForeignKey($columns, $constraint = null)
+ public function dropForeignKey($columns, string $constraint = null): Table
{
if (is_string($columns)) {
- $columns = array($columns);
+ $columns = [$columns];
}
if ($constraint) {
- $this->getAdapter()->dropForeignKey($this->getName(), array(), $constraint);
+ $this->getAdapter()->dropForeignKey($this->getName(), [], $constraint);
} else {
$this->getAdapter()->dropForeignKey($this->getName(), $columns);
}
@@ -543,11 +565,12 @@ class Table
/**
* Checks to see if a foreign key exists.
*
- * @param string|array $columns Column(s)
- * @param null|string $constraint Constraint names
+ * @param string|array $columns Column(s)
+ * @param string|null $constraint Constraint names
+ *
* @return boolean
*/
- public function hasForeignKey($columns, $constraint = null)
+ public function hasForeignKey($columns, string $constraint = null): bool
{
return $this->getAdapter()->hasForeignKey($this->getName(), $columns, $constraint);
}
@@ -560,18 +583,18 @@ class Table
*
* @return Table
*/
- public function addTimestamps($createdAtColumnName = 'created_at', $updatedAtColumnName = 'updated_at')
+ public function addTimestamps(string $createdAtColumnName = 'created_at', string $updatedAtColumnName = 'updated_at'): Table
{
$createdAtColumnName = is_null($createdAtColumnName) ? 'created_at' : $createdAtColumnName;
$updatedAtColumnName = is_null($updatedAtColumnName) ? 'updated_at' : $updatedAtColumnName;
- $this->addColumn($createdAtColumnName, 'timestamp', array(
- 'default' => 'CURRENT_TIMESTAMP',
- 'update' => ''
- ))
- ->addColumn($updatedAtColumnName, 'timestamp', array(
- 'null' => true,
- 'default' => null
- ));
+ $this->addColumn($createdAtColumnName, 'timestamp', [
+ 'default' => 'CURRENT_TIMESTAMP',
+ 'update' => ''
+ ])
+ ->addColumn($updatedAtColumnName, 'timestamp', [
+ 'null' => true,
+ 'default' => null
+ ]);
return $this;
}
@@ -579,16 +602,16 @@ class Table
/**
* Insert data into the table.
*
- * @param $data array of data in the form:
- * array(
+ * @param $data array of data in the form:
+ * array(
* array("col1" => "value1", "col2" => "anotherValue1"),
* array("col2" => "value2", "col2" => "anotherValue2"),
- * )
- * or array("col1" => "value1", "col2" => "anotherValue1")
+ * )
+ * or array("col1" => "value1", "col2" => "anotherValue1")
*
* @return Table
*/
- public function insert($data)
+ public function insert(array $data): Table
{
// handle array of array situations
if (isset($data[0]) && is_array($data[0])) {
@@ -616,13 +639,13 @@ class Table
/**
* Updates a table from the object instance.
*
- * @throws \RuntimeException
* @return void
+ * @throws RuntimeException
*/
public function update()
{
if (!$this->exists()) {
- throw new \RuntimeException('Cannot update a table that doesn\'t exist!');
+ throw new RuntimeException('Cannot update a table that doesn\'t exist!');
}
// update table
diff --git a/phinx/src/Phinx/Migration/AbstractMigration.php b/phinx/src/Phinx/Migration/AbstractMigration.php
index 1598cfb..d711b7c 100644
--- a/phinx/src/Phinx/Migration/AbstractMigration.php
+++ b/phinx/src/Phinx/Migration/AbstractMigration.php
@@ -45,6 +45,13 @@ use think\console\Output as OutputInterface;
*/
abstract class AbstractMigration implements MigrationInterface
{
+ /**
+ * 数据库配置
+ *
+ * @var string|array
+ */
+ protected $dbConfig = null;
+
/**
* @var float
*/
@@ -68,11 +75,11 @@ abstract class AbstractMigration implements MigrationInterface
/**
* Class Constructor.
*
- * @param int $version Migration Version
- * @param InputInterface|null $input
+ * @param int $version Migration Version
+ * @param InputInterface|null $input
* @param OutputInterface|null $output
*/
- final public function __construct($version, InputInterface $input = null, OutputInterface $output = null)
+ final public function __construct(int $version, InputInterface $input = null, OutputInterface $output = null)
{
$this->version = $version;
if (!is_null($input)){
@@ -120,7 +127,7 @@ abstract class AbstractMigration implements MigrationInterface
/**
* {@inheritdoc}
*/
- public function getAdapter()
+ public function getAdapter(): AdapterInterface
{
return $this->adapter;
}
@@ -203,7 +210,7 @@ abstract class AbstractMigration implements MigrationInterface
/**
* {@inheritdoc}
*/
- public function fetchRow($sql)
+ public function fetchRow($sql): array
{
return $this->getAdapter()->fetchRow($sql);
}
@@ -211,7 +218,7 @@ abstract class AbstractMigration implements MigrationInterface
/**
* {@inheritdoc}
*/
- public function fetchAll($sql)
+ public function fetchAll($sql): array
{
return $this->getAdapter()->fetchAll($sql);
}
@@ -270,4 +277,9 @@ abstract class AbstractMigration implements MigrationInterface
{
$this->table($tableName)->drop();
}
+
+ public function getDbConfig()
+ {
+ return $this->dbConfig;
+ }
}
diff --git a/phinx/src/Phinx/Migration/MigrationInterface.php b/phinx/src/Phinx/Migration/MigrationInterface.php
index 927be3a..18f98f0 100644
--- a/phinx/src/Phinx/Migration/MigrationInterface.php
+++ b/phinx/src/Phinx/Migration/MigrationInterface.php
@@ -212,4 +212,9 @@ interface MigrationInterface
* @return Table
*/
public function table($tableName, $options);
+
+ /**
+ * @return mixed
+ */
+ public function getDbConfig();
}
diff --git a/src/Command.php b/src/Command.php
index 73313c4..a9da87e 100644
--- a/src/Command.php
+++ b/src/Command.php
@@ -12,18 +12,27 @@ namespace think\migration;
use InvalidArgumentException;
use Phinx\Db\Adapter\AdapterFactory;
+use Phinx\Db\Adapter\AdapterInterface;
use think\Db;
+use think\Exception;
use think\facade\Config;
abstract class Command extends \think\console\Command
{
+ protected $dbConfig = null;
- public function getAdapter()
+ /**
+ * @param string|null $db_config
+ *
+ * @return AdapterInterface
+ * @throws Exception
+ */
+ public function getAdapter(string $db_config = null): AdapterInterface
{
if (isset($this->adapter)) {
return $this->adapter;
}
-
+ $this->dbConfig = $db_config;
$options = $this->getDbConfig();
$adapter = AdapterFactory::instance()->getAdapter($options['adapter'], $options);
@@ -40,10 +49,11 @@ abstract class Command extends \think\console\Command
/**
* 获取数据库配置
* @return array
+ * @throws Exception
*/
- protected function getDbConfig()
+ protected function getDbConfig(): array
{
- $config = Db::connect()->getConfig();
+ $config = Db::connect($this->dbConfig)->getConfig();
if (0 == $config['deploy']) {
$dbConfig = [
diff --git a/src/Migrator.php b/src/Migrator.php
index 1965953..9aa29da 100644
--- a/src/Migrator.php
+++ b/src/Migrator.php
@@ -15,12 +15,13 @@ use think\migration\db\Table;
class Migrator extends AbstractMigration
{
+
/**
* @param string $tableName
* @param array $options
* @return Table
*/
- public function table($tableName, $options = [])
+ public function table($tableName, $options = []): Table
{
return new Table($tableName, $options, $this->getAdapter());
}
diff --git a/src/command/Migrate.php b/src/command/Migrate.php
index 0659b8e..95e1039 100644
--- a/src/command/Migrate.php
+++ b/src/command/Migrate.php
@@ -11,6 +11,7 @@
namespace think\migration\command;
+use InvalidArgumentException;
use Phinx\Db\Adapter\AdapterFactory;
use Phinx\Db\Adapter\ProxyAdapter;
use Phinx\Migration\AbstractMigration;
@@ -18,6 +19,7 @@ use Phinx\Migration\MigrationInterface;
use Phinx\Util\Util;
use think\console\Input;
use think\console\Output;
+use think\Exception;
use think\facade\Env;
use think\migration\Command;
use think\migration\Migrator;
@@ -29,12 +31,19 @@ abstract class Migrate extends Command
*/
protected $migrations;
- protected function getPath()
+ protected function getPath(): string
{
return Env::get('root_path') . 'database' . DIRECTORY_SEPARATOR . 'migrations';
}
- protected function executeMigration(MigrationInterface $migration, $direction = MigrationInterface::UP)
+ /**
+ * @param MigrationInterface $migration
+ * @param string $direction
+ *
+ * @return void
+ * @throws Exception
+ */
+ protected function executeMigration(MigrationInterface $migration, string $direction = MigrationInterface::UP)
{
$this->output->writeln('');
$this->output->writeln(' ==' . ' ' . $migration->getVersion() . ' ' . $migration->getName() . ':' . ' ' . (MigrationInterface::UP === $direction ? 'migrating' : 'reverting') . '');
@@ -44,7 +53,7 @@ abstract class Migrate extends Command
$startTime = time();
$direction = (MigrationInterface::UP === $direction) ? MigrationInterface::UP : MigrationInterface::DOWN;
- $migration->setAdapter($this->getAdapter());
+ $migration->setAdapter($this->getAdapter($migration->getDbConfig()));
// begin the transaction if the adapter supports it
if ($this->getAdapter()->hasTransactions()) {
@@ -85,17 +94,26 @@ abstract class Migrate extends Command
$this->output->writeln(' ==' . ' ' . $migration->getVersion() . ' ' . $migration->getName() . ':' . ' ' . (MigrationInterface::UP === $direction ? 'migrated' : 'reverted') . ' ' . sprintf('%.4fs', $end - $start) . '');
}
- protected function getVersionLog()
+ /**
+ * @return array
+ * @throws Exception
+ */
+ protected function getVersionLog(): array
{
return $this->getAdapter()->getVersionLog();
}
- protected function getVersions()
+
+ /**
+ * @return array
+ * @throws Exception
+ */
+ protected function getVersions(): array
{
return $this->getAdapter()->getVersions();
}
- protected function getMigrations()
+ protected function getMigrations(): array
{
if (null === $this->migrations) {
$phpFiles = glob($this->getPath() . DIRECTORY_SEPARATOR . '*.php', defined('GLOB_BRACE') ? GLOB_BRACE : 0);
@@ -110,14 +128,14 @@ abstract class Migrate extends Command
$version = Util::getVersionFromFileName(basename($filePath));
if (isset($versions[$version])) {
- throw new \InvalidArgumentException(sprintf('Duplicate migration - "%s" has the same version as "%s"', $filePath, $versions[$version]->getVersion()));
+ throw new InvalidArgumentException(sprintf('Duplicate migration - "%s" has the same version as "%s"', $filePath, $versions[$version]->getVersion()));
}
// convert the filename to a class name
$class = Util::mapFileNameToClassName(basename($filePath));
if (isset($fileNames[$class])) {
- throw new \InvalidArgumentException(sprintf('Migration "%s" has the same name as "%s"', basename($filePath), $fileNames[$class]));
+ throw new InvalidArgumentException(sprintf('Migration "%s" has the same name as "%s"', basename($filePath), $fileNames[$class]));
}
$fileNames[$class] = basename($filePath);
@@ -126,14 +144,14 @@ abstract class Migrate extends Command
/** @noinspection PhpIncludeInspection */
require_once $filePath;
if (!class_exists($class)) {
- throw new \InvalidArgumentException(sprintf('Could not find class "%s" in file "%s"', $class, $filePath));
+ throw new InvalidArgumentException(sprintf('Could not find class "%s" in file "%s"', $class, $filePath));
}
// instantiate it
$migration = new $class($version, $this->input, $this->output);
if (!($migration instanceof AbstractMigration)) {
- throw new \InvalidArgumentException(sprintf('The class "%s" in file "%s" must extend \Phinx\Migration\AbstractMigration', $class, $filePath));
+ throw new InvalidArgumentException(sprintf('The class "%s" in file "%s" must extend \Phinx\Migration\AbstractMigration', $class, $filePath));
}
$versions[$version] = $migration;
diff --git a/src/command/migrate/Rollback.php b/src/command/migrate/Rollback.php
index 07826a6..777b3c3 100644
--- a/src/command/migrate/Rollback.php
+++ b/src/command/migrate/Rollback.php
@@ -13,6 +13,7 @@ use Phinx\Migration\MigrationInterface;
use think\console\input\Option as InputOption;
use think\console\Input;
use think\console\Output;
+use think\Exception;
use think\migration\command\Migrate;
class Rollback extends Migrate
@@ -44,7 +45,9 @@ EOT
*
* @param Input $input
* @param Output $output
+ *
* @return void
+ * @throws \Exception
*/
protected function execute(Input $input, Output $output)
{
@@ -65,7 +68,15 @@ EOT
$output->writeln('All Done. Took ' . sprintf('%.4fs', $end - $start) . '');
}
- protected function rollback($version = null, $force = false)
+
+ /**
+ * @param $version
+ * @param bool $force
+ *
+ * @return void
+ * @throws Exception
+ */
+ protected function rollback($version = null, bool $force = false)
{
$migrations = $this->getMigrations();
$versionLog = $this->getVersionLog();
diff --git a/src/command/migrate/Run.php b/src/command/migrate/Run.php
index c0fbeec..c5243e9 100644
--- a/src/command/migrate/Run.php
+++ b/src/command/migrate/Run.php
@@ -9,6 +9,7 @@
namespace think\migration\command\migrate;
+use Exception;
use Phinx\Migration\MigrationInterface;
use think\console\Input;
use think\console\input\Option as InputOption;
@@ -43,7 +44,9 @@ EOT
*
* @param Input $input
* @param Output $output
- * @return integer integer 0 on success, or an error code.
+ *
+ * @return void
+ * @throws Exception
*/
protected function execute(Input $input, Output $output)
{
@@ -79,6 +82,12 @@ EOT
}
}
+ /**
+ * @param $version
+ *
+ * @return void
+ * @throws \think\Exception
+ */
protected function migrate($version = null)
{
$migrations = $this->getMigrations();
diff --git a/src/config.php b/src/config.php
index e9d993c..18fe6dc 100644
--- a/src/config.php
+++ b/src/config.php
@@ -1,13 +1,9 @@
-// +----------------------------------------------------------------------
-\think\Console::addDefaultCommands([
+
+use think\Console;
+
+Console::addDefaultCommands([
"think\\migration\\command\\migrate\\Create",
"think\\migration\\command\\migrate\\Run",
"think\\migration\\command\\migrate\\Rollback",
diff --git a/src/db/Table.php b/src/db/Table.php
index cf4daa9..b1fb82d 100644
--- a/src/db/Table.php
+++ b/src/db/Table.php
@@ -95,20 +95,22 @@ class Table extends \Phinx\Db\Table
/**
* @param string $createdAtColumnName
* @param string $updatedAtColumnName
+ *
* @return \Phinx\Db\Table|Table
*/
- public function addTimestamps($createdAtColumnName = 'create_time', $updatedAtColumnName = 'update_time')
+ public function addTimestamps(string $createdAtColumnName = 'create_time', string $updatedAtColumnName = 'update_time')
{
return parent::addTimestamps($createdAtColumnName, $updatedAtColumnName);
}
/**
* @param \Phinx\Db\Table\Column|string $columnName
- * @param null $type
+ * @param string|null $type
* @param array $options
+ *
* @return \Phinx\Db\Table|Table
*/
- public function addColumn($columnName, $type = null, $options = [])
+ public function addColumn($columnName, string $type = null, array $options = [])
{
if ($columnName instanceof Column && $columnName->getUnique()) {
$index = new Index();
@@ -123,9 +125,10 @@ class Table extends \Phinx\Db\Table
* @param string $columnName
* @param null $newColumnType
* @param array $options
+ *
* @return \Phinx\Db\Table|Table
*/
- public function changeColumn($columnName, $newColumnType = null, $options = [])
+ public function changeColumn(string $columnName, $newColumnType, array $options = [])
{
if ($columnName instanceof \Phinx\Db\Table\Column) {
return parent::changeColumn($columnName->getName(), $columnName, $options);