Completed
Push — master ( 65a2de...91e3d3 )
by mw
11:17
created

LazyDBConnectionProvider   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
lcom 1
cbo 0
dl 0
loc 72
rs 10
c 1
b 0
f 0
ccs 0
cts 19
cp 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getConnection() 0 12 3
A releaseConnection() 0 5 3
A isConnection() 0 3 1
1
<?php
2
3
namespace SWL;
4
5
use DatabaseBase;
6
use RuntimeException;
7
8
/**
9
 * @license GNU GPL v2+
10
 * @since 1.2
11
 *
12
 * @author Jeroen De Dauw < [email protected] >
13
 */
14
class LazyDBConnectionProvider {
15
16
	/**
17
	 * @var DatabaseBase|null
18
	 */
19
	protected $connection = null;
20
21
	/**
22
	 * @var int|null
23
	 */
24
	protected $connectionId = null;
25
26
	/**
27
	 * @var string|array
28
	 */
29
	protected $groups;
30
31
	/**
32
	 * @var string|boolean $wiki
33
	 */
34
	protected $wiki;
35
36
	/**
37
	 * @since 1.2
38
	 *
39
	 * @param int $connectionId
40
	 * @param string|array $groups
41
	 * @param string|boolean $wiki
42
	 */
43
	public function __construct( $connectionId, $groups = array(), $wiki = false ) {
44
		$this->connectionId = $connectionId;
45
		$this->groups = $groups;
46
		$this->wiki = $wiki;
47
	}
48
49
	/**
50
	 * @see DBConnectionProvider::getConnection
51
	 *
52
	 * @since 1.2
53
	 *
54
	 * @return DatabaseBase
55
	 * @throws RuntimeException
56
	 */
57
	public function getConnection() {
58
59
		if ( $this->connection === null ) {
60
			$this->connection = wfGetLB( $this->wiki )->getConnection( $this->connectionId, $this->groups, $this->wiki );
61
		}
62
63
		if ( $this->isConnection( $this->connection ) ) {
64
			return $this->connection;
65
		}
66
67
		throw new RuntimeException( 'Expected a DatabaseBase instance' );
68
	}
69
70
	/**
71
	 * @see DBConnectionProvider::releaseConnection
72
	 *
73
	 * @since 1.2
74
	 */
75
	public function releaseConnection() {
76
		if ( $this->wiki !== false && $this->connection !== null ) {
77
			wfGetLB( $this->wiki )->reuseConnection( $this->connection );
78
		}
79
	}
80
81
	protected function isConnection( $connection ) {
82
		return $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...
83
	}
84
85
}
86