-
Notifications
You must be signed in to change notification settings - Fork 8k
Expand file tree
/
Copy pathpdo_sqlite_createcollation_trampoline.phpt
More file actions
75 lines (67 loc) · 1.34 KB
/
pdo_sqlite_createcollation_trampoline.phpt
File metadata and controls
75 lines (67 loc) · 1.34 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
--TEST--
Test Pdo\Sqlite::createCollation() trampoline callback
--EXTENSIONS--
pdo_sqlite
--FILE--
<?php
$db = new Pdo\Sqlite('sqlite::memory:');
$db->query('CREATE TABLE test_pdo_sqlite_createcollation_trampoline (s VARCHAR(4))');
$stmt = $db->query("INSERT INTO test_pdo_sqlite_createcollation_trampoline VALUES ('a1'), ('a10'), ('a2')");
class TrampolineTest {
public function __call(string $name, array $arguments) {
echo 'Trampoline for ', $name, PHP_EOL;
return strnatcmp(...$arguments);
}
}
var_dump($db->createCollation('NAT', [new TrampolineTest(), 'NAT']));
echo "default\n";
foreach ($db->query('SELECT s FROM test_pdo_sqlite_createcollation_trampoline ORDER BY s') as $row) {
var_dump($row);
}
echo "natural\n";
foreach ($db->query('SELECT s FROM test_pdo_sqlite_createcollation_trampoline ORDER BY s COLLATE NAT') as $row) {
var_dump($row);
}
?>
--EXPECT--
bool(true)
default
array(2) {
["s"]=>
string(2) "a1"
[0]=>
string(2) "a1"
}
array(2) {
["s"]=>
string(3) "a10"
[0]=>
string(3) "a10"
}
array(2) {
["s"]=>
string(2) "a2"
[0]=>
string(2) "a2"
}
natural
Trampoline for NAT
Trampoline for NAT
array(2) {
["s"]=>
string(2) "a1"
[0]=>
string(2) "a1"
}
array(2) {
["s"]=>
string(2) "a2"
[0]=>
string(2) "a2"
}
array(2) {
["s"]=>
string(3) "a10"
[0]=>
string(3) "a10"
}