SqlMigrationRunner::getFileExtension()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php
2
/**
3
 * This file is part of the DB-Migration library.
4
 * For the full copyright and license information, please view
5
 * the LICENSE file that was distributed with this source code.
6
 *
7
 * @copyright Alexander Obuhovich <[email protected]>
8
 * @link      https://github.com/console-helpers/db-migration
9
 */
10
11
namespace ConsoleHelpers\DatabaseMigration;
12
13
14
class SqlMigrationRunner extends AbstractMigrationRunner
15
{
16
17
	/**
18
	 * Returns supported file extension.
19
	 *
20
	 * @return string
21
	 */
22 1
	public function getFileExtension()
23
	{
24 1
		return 'sql';
25
	}
26
27
	/**
28
	 * Runs the migration.
29
	 *
30
	 * @param string           $migration_file Migration file.
31
	 * @param MigrationContext $context        Migration context.
32
	 *
33
	 * @return void
34
	 * @throws \LogicException When an empty migration is discovered.
35
	 */
36 2
	public function run($migration_file, MigrationContext $context)
37
	{
38 2
		$sqls = file_get_contents($migration_file);
39 2
		$sqls = array_filter(preg_split('/;\s+/', $sqls));
40
41 2
		if ( !$sqls ) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $sqls of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
42 1
			throw new \LogicException('The "' . basename($migration_file) . '" migration contains no SQL statements.');
43
		}
44
45 1
		$db = $context->getDatabase();
46
47 1
		foreach ( $sqls as $sql ) {
48 1
			$db->perform($sql);
49
		}
50
	}
51
52
}
53