Passed
Branch scrutinizer (dafd44)
by Wanderson
01:40
created

Timer::time()   A

Complexity

Conditions 4
Paths 8

Size

Total Lines 16
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 14
nc 8
nop 0
dl 0
loc 16
rs 9.7998
c 0
b 0
f 0
1
<?php
2
3
namespace Win\Calendar;
4
5
/**
6
 * Contador de Tempo
7
 *
8
 * Usado para medir o tempo de execução de códigos
9
 *
10
 * <code>
11
 * $t = new Win\Helper\Timer();
12
 * [code here]
13
 * echo $t->time();
14
 * </code>
15
 */
16
class Timer {
17
18
	private $startTime;
19
20
	/**
21
	 * Inicia a contagem de tempo
22
	 */
23
	public function __construct() {
24
		$this->startTime = microtime(true);
25
	}
26
27
	/**
28
	 * Reinicia a contagem de tempo
29
	 */
30
	public function reset() {
31
		$this->startTime = microtime(true);
32
	}
33
34
	/**
35
	 * Retorna o tempo gasto (em microsegundos)
36
	 * @return float
37
	 */
38
	private function getMicroTime() {
39
		return microtime(true) - $this->startTime;
40
	}
41
42
	/**
43
	 * Retorna o tempo gasto (na unidade correta)
44
	 * @return string
45
	 */
46
	public function time() {
47
		$segs = $this->getMicroTime();
48
		$days = floor($segs / 86400);
49
		$segs -= $days * 86400;
50
		$hours = floor($segs / 3600);
51
		$segs -= $hours * 3600;
52
		$minutes = floor($segs / 60);
53
		$segs -= $minutes * 60;
54
		$microsegs = ($segs - floor($segs)) * 1000;
55
56
		return
57
				(empty($days) ? '' : $days . 'd ') .
58
				(empty($hours) ? '' : $hours . 'h ') .
59
				(empty($minutes) ? '' : $minutes . 'm ') .
60
				floor($segs) . 's ' .
61
				$microsegs . 'ms';
62
	}
63
64
}
65