LazyDBConnectionProvider::getConnection()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
namespace Wikibase\Database\MediaWiki;
4
5
use DatabaseBase;
6
7
/**
8
 * Lazy database connection provider.
9
 * The connection is fetched when needed using the id provided in the constructor.
10
 *
11
 * TODO: implement connection handling requirements
12
 *
13
 * @since 0.1
14
 *
15
 * @licence GNU GPL v2+
16
 * @author Jeroen De Dauw < [email protected] >
17
 */
18
class LazyDBConnectionProvider implements DBConnectionProvider {
19
20
	/**
21
	 * @var int
22
	 */
23
	private $connectionId;
24
25
	/**
26
	 * Query group(s), or false for the generic reader
27
	 *
28
	 * @var array|string|bool
29
	 */
30
	private $groups;
31
32
	/**
33
	 * Wiki ID, or false for the current wiki
34
	 *
35
	 * @var string|bool
36
	 */
37
	private $wiki;
38
39
	/**
40
	 * @var DatabaseBase|null
41
	 */
42
	private $connection = null;
43
44
	/**
45
	 * @since 0.1
46
	 *
47
	 * @param int $connectionId
48
	 * @param array|string|bool $groups Query group(s), or false for the generic reader
49
	 * @param string|bool $wiki Wiki ID, or false for the current wiki
50
	 */
51
	public function __construct( $connectionId, $groups = array(), $wiki = false ) {
52
		$this->connectionId = $connectionId;
53
		$this->groups = $groups;
54
		$this->wiki = $wiki;
55
	}
56
57
	/**
58
	 * @see DBConnectionProvider::getConnection
59
	 *
60
	 * @since 0.1
61
	 *
62
	 * @return DatabaseBase
63
	 */
64
	public function getConnection() {
65
		if ( $this->connection === null ) {
66
			$this->connection = wfGetLB( $this->wiki )->getConnection( $this->connectionId, $this->groups, $this->wiki );
67
		}
68
69
		assert( $this->connection instanceof DatabaseBase );
0 ignored issues
show
Bug introduced by
The class DatabaseBase does not exist. Is this class maybe located in a folder that is not analyzed, or in a newer version of your dependencies than listed in your composer.lock/composer.json?
Loading history...
70
71
		return $this->connection;
72
	}
73
74
	/**
75
	 * @see DBConnectionProvider::releaseConnection
76
	 *
77
	 * @since 0.1
78
	 */
79
	public function releaseConnection() {
80
		if ( $this->wiki !== false && $this->connection !== null ) {
81
			wfGetLB( $this->wiki )->reuseConnection( $this->connection );
82
		}
83
	}
84
85
}
86