7
7
8
8
namespace PHPViet \NumberToWords ;
9
9
10
- use InvalidArgumentException ;
11
- use PHPViet \NumberToWords \Concerns \TripletsConverter ;
12
- use PHPViet \NumberToWords \Concerns \TripletTransformer ;
13
-
14
10
/**
15
11
* @author Vuong Minh <vuongxuongminh@gmail.com>
16
12
* @since 1.0.0
17
13
*/
18
14
class Transformer
19
15
{
20
- use TripletsConverter;
21
- use TripletTransformer;
16
+ use Concerns \NumberResolver;
17
+ use Concerns \TripletsConverter;
18
+ use Concerns \TripletTransformer;
22
19
23
20
/**
24
21
* @var DictionaryInterface
@@ -28,7 +25,7 @@ class Transformer
28
25
/**
29
26
* Tạo đối tượng mới với từ điển chỉ định.
30
27
*
31
- * @param DictionaryInterface $dictionary
28
+ * @param DictionaryInterface $dictionary
32
29
*/
33
30
public function __construct (?DictionaryInterface $ dictionary = null )
34
31
{
@@ -42,12 +39,12 @@ public function __construct(?DictionaryInterface $dictionary = null)
42
39
/**
43
40
* Chuyển đổi số sang chữ số.
44
41
*
45
- * @param int|float|string $number
42
+ * @param int|float|string $number
46
43
* @return string
47
44
*/
48
45
public function toWords ($ number ): string
49
46
{
50
- [$ minus , $ number , $ decimal ] = $ this ->resolve ($ number );
47
+ [$ minus , $ number , $ decimal ] = $ this ->resolveNumber ($ number );
51
48
$ words = [];
52
49
$ words [] = $ minus ? $ this ->dictionary ->minus () : '' ;
53
50
@@ -77,14 +74,14 @@ public function toWords($number): string
77
74
* Chuyển đổi số sang chữ số kết hợp với đơn vị tiền tệ.
78
75
*
79
76
* @param $number
80
- * @param array|string[]|string $unit
77
+ * @param array|string[]|string $unit
81
78
* @return string
82
79
*/
83
80
public function toCurrency ($ number , $ unit = 'đồng ' ): string
84
81
{
85
82
$ unit = (array ) $ unit ;
86
83
$ originNumber = $ number ;
87
- [$ minus , $ number , $ decimal ] = $ this ->resolve ($ number );
84
+ [$ minus , $ number , $ decimal ] = $ this ->resolveNumber ($ number );
88
85
$ words = [];
89
86
90
87
if (0 === $ decimal || ! isset ($ unit [1 ])) {
@@ -105,26 +102,13 @@ public function toCurrency($number, $unit = 'đồng'): string
105
102
/**
106
103
* 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ố.
107
104
*
108
- * @param int|float|string $number
105
+ * @param $number
109
106
* @return array
107
+ * @deprecated since 1.0.5 use [[resolveNumber()]] instead and it will be remove since 1.1.0.
110
108
*/
111
109
protected function resolve ($ number ): array
112
110
{
113
- if (! is_numeric ($ number )) {
114
- throw new InvalidArgumentException (sprintf ('Number arg (`%s`) must be numeric! ' , $ number ));
115
- }
116
-
117
- $ 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.
118
- $ number = (string ) $ number ;
119
- $ minus = '- ' === $ number [0 ];
120
-
121
- if (false !== strpos ($ number , '. ' )) {
122
- $ numbers = explode ('. ' , $ number , 2 );
123
- } else {
124
- $ numbers = [$ number , 0 ];
125
- }
126
-
127
- return array_merge ([$ minus ], array_map ('abs ' , $ numbers ));
111
+ return $ this ->resolveNumber ($ number );
128
112
}
129
113
130
114
/**
0 commit comments