-
Notifications
You must be signed in to change notification settings - Fork 426
/
sscanf.php
38 lines (31 loc) · 1.16 KB
/
sscanf.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
namespace Sscanf;
use function PHPStan\Testing\assertType;
function foo(string $s) {
assertType('int|null', sscanf('20-20', '%d-%d', $first, $second));
assertType('array{int, int}|null', sscanf('20-20', '%d-%d'));
}
function sscanfFormatInference(string $s) {
assertType('int|null', sscanf($s, $s, $first, $second));
assertType('array|null', sscanf($s, $s));
assertType('array{string}|null', sscanf($s, '%c'));
assertType('array{int}|null', sscanf($s, '%d'));
assertType('array{float}|null', sscanf($s, '%e'));
assertType('array{float}|null', sscanf($s, '%E'));
assertType('array{float}|null', sscanf($s, '%f'));
assertType('array{int}|null', sscanf($s, '%o'));
assertType('array{string}|null', sscanf($s, '%s'));
assertType('array{int}|null', sscanf($s, '%u'));
assertType('array{int}|null', sscanf($s, '%x'));
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
assertType('string', $month);
assertType('int', $day);
assertType('int', $year);
}
function fscanfFormatInference($r) {
list($month, $day, $year) = fscanf($r, "%s %d %d");
assertType('string', $month);
assertType('int', $day);
assertType('int', $year);
}