DeferredStringifier   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 32
rs 10
c 0
b 0
f 0
wmc 3
lcom 0
cbo 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A __toString() 0 6 2
1
<?php
2
/**
3
 * Class that defers a slow string generation until the string is actually needed.
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License along
16
 * with this program; if not, write to the Free Software Foundation, Inc.,
17
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
 * http://www.gnu.org/copyleft/gpl.html
19
 *
20
 * @file
21
 */
22
23
/**
24
 * @since 1.25
25
 */
26
class DeferredStringifier {
27
	/** @var callable Callback used for result string generation */
28
	private $callback;
29
30
	/** @var array */
31
	private $params;
32
33
	/** @var string */
34
	private $result;
35
36
	/**
37
	 * @param callable $callback Callback that gets called by __toString
38
	 * @param mixed $param,... Parameters to the callback
0 ignored issues
show
Bug introduced by
There is no parameter named $param,.... Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
39
	 */
40
	public function __construct( $callback /*...*/ ) {
41
		$this->params = func_get_args();
42
		array_shift( $this->params );
43
		$this->callback = $callback;
44
	}
45
46
	/**
47
	 * Get the string generated from the callback
48
	 *
49
	 * @return string
50
	 */
51
	public function __toString() {
52
		if ( $this->result === null ) {
53
			$this->result = call_user_func_array( $this->callback, $this->params );
54
		}
55
		return $this->result;
56
	}
57
}
58