Benchmark::start()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
/**
4
 * Manage Benchmark
5
 *
6
 * @category  	lib
7
 * @author    	Judicaël Paquet <[email protected]>
8
 * @copyright 	Copyright (c) 2013-2014 PAQUET Judicaël FR Inc. (https://github.com/las93)
9
 * @license   	https://github.com/las93/venus2/blob/master/LICENSE.md Tout droit réservé à PAQUET Judicaël
10
 * @version   	Release: 1.0.0
11
 * @filesource	https://github.com/las93/venus2
12
 * @link      	https://github.com/las93
13
 * @since     	1.0
14
 */
15
namespace Venus\lib;
16
17
use \Venus\lib\Log\LoggerAwareInterface as LoggerAwareInterface;
18
use \Venus\lib\Log\LoggerInterface as LoggerInterface;
19
20
/**
21
 * This class manage the Benchmark
22
 *
23
 * @category  	lib
24
 * @author    	Judicaël Paquet <[email protected]>
25
 * @copyright 	Copyright (c) 2013-2014 PAQUET Judicaël FR Inc. (https://github.com/las93)
26
 * @license   	https://github.com/las93/venus2/blob/master/LICENSE.md Tout droit réservé à PAQUET Judicaël
27
 * @version   	Release: 1.0.0
28
 * @filesource	https://github.com/las93/venus2
29
 * @link      	https://github.com/las93
30
 * @since     	1.0
31
 *
32
 * @tutorial	$oBenchmark = new \Venus\lib\Benchmark;
33
 * 				echo $oBenchmark->getUrl('css/style.css');
34
 */
35
class Benchmark implements LoggerAwareInterface
36
{
37
	/**
38
	 * start Benchmark
39
	 *
40
	 * @access private
41
	 * @var    float
42
	 */
43
	private static $_fStart = 0;
44
	
45
	/**
46
	 * start Benchmark
47
	 *
48
	 * @access private
49
	 * @var    \Venus\lib\Debug
50
	 */
51
	private $_oLogger;
52
53
	/**
54
	 * assign a variable for the Benchmark
55
	 *
56
	 * @access public
57
	 * @return void
58
	 */
59
	public static function start()
60
	{
61
		self::$_fStart = microtime(true);
62
	}
63
64
	/**
65
	 * assign a variable for the Benchmark
66
	 *
67
	 * @access public
68
	 * @return float
69
	 */
70
	public static function getPoint() : float
71
	{
72
		return microtime(true) - self::$_fStart;
73
	}
74
75
	/**
76
	 * assign a variable for the Benchmark
77
	 *
78
	 * @access public
79
	 * @param  string $sName name of point
80
	 * @return void
81
	 */
82
	public static function setPointInLog(string $sName = 'default')
83
	{
84
	    $oLogger = Debug::getInstance();
85
		$oLogger->info('BENCHMARK: Time at this point '.(microtime(true) - self::$_fStart).' - '.$sName);
86
	}
87
	
88
	/**
89
	 * Sets a logger instance on the object
90
	 *
91
	 * @access public
92
	 * @param  LoggerInterface $logger
93
	 * @return void
94
	 */
95
	public function setLogger(LoggerInterface $logger)
96
	{
97
	    if ($this->_oLogger === null) { $this->_oLogger = $logger; }
0 ignored issues
show
Documentation Bug introduced by
$logger is of type object<Venus\lib\Log\LoggerInterface>, but the property $_oLogger was declared to be of type object<Venus\lib\Debug>. Are you sure that you always receive this specific sub-class here, or does it make sense to add an instanceof check?

Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a given class or a super-class is assigned to a property that is type hinted more strictly.

Either this assignment is in error or an instanceof check should be added for that assignment.

class Alien {}

class Dalek extends Alien {}

class Plot
{
    /** @var  Dalek */
    public $villain;
}

$alien = new Alien();
$plot = new Plot();
if ($alien instanceof Dalek) {
    $plot->villain = $alien;
}
Loading history...
98
	}
99
100
	/**
101
	 * get the logger instance on the object
102
	 *
103
	 * @access public
104
	 * @return LoggerInterface
105
	 */
106
	public function getLogger()
107
	{
108
	   return $this->_oLogger;
109
	}
110
}
111