NumberResolver::resolveNumber()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 18
rs 9.6666
c 0
b 0
f 0
cc 3
nc 3
nop 1
1
<?php
2
/**
3
 * @link https://github.com/phpviet/number-to-words
4
 * @copyright (c) PHP Viet
5
 * @license [MIT](http://www.opensource.org/licenses/MIT)
6
 */
7
8
namespace PHPViet\NumberToWords\Concerns;
9
10
use InvalidArgumentException;
11
12
/**
13
 * @author Vuong Minh <[email protected]>
14
 * @since 1.0.5
15
 */
16
trait NumberResolver
17
{
18
    /**
19
     * Chia số truyền vào thành mảng bao gồm kiểu số âm hoặc dương, số nguyên và phân số.
20
     *
21
     * @param  int|float|string  $number
22
     * @return array
23
     */
24
    protected function resolveNumber($number): array
25
    {
26
        if (! is_numeric($number)) {
27
            throw new InvalidArgumentException(sprintf('Number arg (`%s`) must be numeric!', $number));
28
        }
29
30
        $number += 0; // trick xóa các số 0 lẻ sau cùng của phân số và xử lý kiểu số âm hoặc dương đối với input là chuỗi.
31
        $number = (string) $number;
32
        $minus = '-' === $number[0];
33
34
        if (false !== strpos($number, '.')) {
35
            $numbers = explode('.', $number, 2);
36
        } else {
37
            $numbers = [$number, 0];
38
        }
39
40
        return array_merge([$minus], array_map('abs', $numbers));
41
    }
42
}
43