Converter::RubToKop()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 8
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 12
rs 9.6111
1
<?php
2
3
namespace alekciy\ofd;
4
5
use InvalidArgumentException;
6
7
trait Converter
8
{
9
	/**
10
	 * Преобразует сумму $sum заданную в рублях в сумму в копейках. В случае задания суммы строкой разделитель дробной
11
	 * части может быть точкой или запятой. Разделитель разрядов не поддерживается, т.е. передавать '2 000,35' нельзя.
12
	 *
13
	 * @param int|float|string $sum
14
	 * @return int
15
	 */
16
	public static function RubToKop($sum): int
17
	{
18
		if (is_integer($sum)) {
19
			return $sum;
20
		} elseif (is_float($sum)) {
21
			return intval($sum * 100);
22
		} elseif (is_string($sum)
23
			&& preg_match('~^\s?[0-9]+[.,]?[0-9]*\s?$~u', $sum) === 1
24
		) {
25
			return intval($sum * 100);
26
		}
27
		throw new InvalidArgumentException('Неправильный денежный формат');
28
	}
29
}