Skip to content

Commit c99aaa4

Browse files
committed
refactoring.
1 parent f82f954 commit c99aaa4

File tree

9 files changed

+67
-35
lines changed

9 files changed

+67
-35
lines changed

src/Formatters/Currency.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,12 @@ public function setPadLength( int $PadLength ) : Currency
9494
return $this;
9595
}
9696

97-
public function format( $Data ): string
97+
/**
98+
* @param string $Data
99+
* @return string|null
100+
*/
101+
102+
public function format( string $Data ): ?string
98103
{
99104
return
100105
$this->getCurrencySymbol().str_pad(

src/Formatters/Date.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,17 @@ public function __construct()
1313
$this->setFormat( "Y-m-d" );
1414
}
1515

16-
public function format( $Data ): string
16+
/**
17+
* @param string $Data
18+
* @return string|null
19+
*/
20+
21+
public function format( string $Data ): ?string
1722
{
1823
$Date = self::normalizeDate( $Data );
19-
if( $Date === '' )
24+
if( $Date === null )
2025
{
21-
return '';
26+
return null;
2227
}
2328

2429
return date( $this->getFormat(), strtotime( $Date ) );

src/Formatters/DateBase.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,10 @@ public static function yyyymmdd( array $Parts ) : bool
117117
* Takes dd/mm/yyyy, mm/dd/yyyy or yyyy/mm/dd
118118
*
119119
* @param string $Date
120-
* @return string
120+
* @return ?string
121121
*/
122-
public static function normalizeDate( string $Date ) : string
122+
123+
public static function normalizeDate( string $Date ) : ?string
123124
{
124125
$Date = trim( $Date );
125126
$Parts = explode( ' ', $Date );
@@ -143,14 +144,14 @@ public static function normalizeDate( string $Date ) : string
143144

144145
if( !$Delimiter )
145146
{
146-
return false;
147+
return null;
147148
}
148149

149150
$Parts = explode( $Delimiter, $Date );
150151

151152
if( count( $Parts ) != 3 )
152153
{
153-
return false;
154+
return null;
154155
}
155156

156157
if( self::yyyymmdd( $Parts ) )
@@ -168,6 +169,6 @@ public static function normalizeDate( string $Date ) : string
168169
return $Parts[ 2 ].'-'.$Parts[ 1 ].'-'.$Parts[ 0 ];
169170
}
170171

171-
return '';
172+
return null;
172173
}
173174
}

src/Formatters/DateTime.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ public function __construct()
1212
$this->setFormat( "Y-m-d g:i a" );
1313
}
1414

15-
public function format( $Data ): string
15+
/**
16+
* @param string $Data
17+
* @return string|null
18+
*/
19+
20+
public function format( string $Data ): ?string
1621
{
1722
$Parts = explode( ' ', $Data );
1823
$Date = self::normalizeDate( $Parts[ 0 ] );

src/Formatters/IFormatter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
*/
88
interface IFormatter
99
{
10-
public function format( $Data ) : string;
10+
public function format( string $Data ) : ?string;
1111
}

src/Formatters/PhoneNumber.php

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,39 @@
55
/**
66
* Formats phone numbers.
77
*/
8+
89
class PhoneNumber implements IFormatter
910
{
10-
public function format( $Data ): string
11-
{
12-
$Phone = preg_replace("/[^0-9]/", "", $Data);
11+
/**
12+
* @param string $Data
13+
* @return string|null
14+
*/
15+
16+
public function format( string $Data ): ?string
17+
{
18+
$Phone = preg_replace("/[^0-9]/", "", $Data);
1319

14-
if( strlen( $Phone ) == 7 )
15-
{
16-
$Phone = $this->format7Digit( $Phone );
17-
}
18-
else if( strlen( $Phone ) == 10 )
19-
{
20-
$Phone = $this->format10Digit( $Phone );
21-
}
22-
else if( strlen( $Phone ) > 10 )
23-
{
24-
$Phone = $this->formatInternational( $Phone );
25-
}
20+
if( strlen( $Phone ) == 7 )
21+
{
22+
$Phone = $this->format7Digit( $Phone );
23+
}
24+
else if( strlen( $Phone ) == 10 )
25+
{
26+
$Phone = $this->format10Digit( $Phone );
27+
}
28+
else if( strlen( $Phone ) > 10 )
29+
{
30+
$Phone = $this->formatInternational( $Phone );
31+
}
2632

27-
return $Phone;
28-
}
33+
return $Phone;
34+
}
2935

3036
/**
3137
* @param array|string|null $Phone
3238
* @return string
3339
*/
40+
3441
protected function format7Digit( array|string|null $Phone ): string
3542
{
3643
$Pre = substr( $Phone, 0, 3 );
@@ -44,6 +51,7 @@ protected function format7Digit( array|string|null $Phone ): string
4451
* @param array|string|null $Phone
4552
* @return string
4653
*/
54+
4755
protected function format10Digit( array|string|null $Phone ): string
4856
{
4957
$Area = substr( $Phone, 0, 3 );
@@ -58,6 +66,7 @@ protected function format10Digit( array|string|null $Phone ): string
5866
* @param array|string|null $Phone
5967
* @return string
6068
*/
69+
6170
protected function formatInternational( array|string|null $Phone ): string
6271
{
6372
$CountryCode = substr($Phone, 0, strlen($Phone) - 10);

src/Formatters/Time.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,20 @@
55
/**
66
* Formats time.
77
*/
8+
89
class Time extends DateBase implements IFormatter
910
{
1011
public function __construct()
1112
{
1213
$this->setFormat( "g:i a" );
1314
}
1415

15-
public function format( $Data ): string
16+
/**
17+
* @param string $Data
18+
* @return string|null
19+
*/
20+
21+
public function format( string $Data ): ?string
1622
{
1723
return date( $this->getFormat(), strtotime( $Data ) );
1824
}

tests/Formatters/DateTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,32 +31,32 @@ public function testFormat()
3131
);
3232

3333
$this->assertEquals(
34-
'',
34+
null,
3535
$Formatter->format( '23/12')
3636
);
3737

3838
$this->assertEquals(
39-
'',
39+
null,
4040
$Formatter->format( '23/13/2018')
4141
);
4242

4343
$this->assertEquals(
44-
'',
44+
null,
4545
$Formatter->format( '13/32/2018')
4646
);
4747

4848
$this->assertEquals(
49-
'',
49+
null,
5050
$Formatter->format( '32/12/2018')
5151
);
5252

5353
$this->assertEquals(
54-
'',
54+
null,
5555
$Formatter->format( '3244/1244/20184')
5656
);
5757

5858
$this->assertEquals(
59-
'',
59+
null,
6060
$Formatter->format( '3244124420184')
6161
);
6262

versionlog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## 0.6.6
22
* Upgraded tests to 100% coverage.
3+
* Refactored code.
34

45
## 0.6.5 2025-01-13
56
* Updated phone number formatter to support international.

0 commit comments

Comments
 (0)