forked from mevdschee/php-crud-api
-
Notifications
You must be signed in to change notification settings - Fork 0
/
patch.php
51 lines (47 loc) · 1.49 KB
/
patch.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
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
// patch files for PHP 7.0 compatibility
function patchDir(string $base, string $dir): int
{
$count = 0;
$entries = scandir($dir);
foreach ($entries as $entry) {
if ($entry === '.' || $entry === '..') {
continue;
}
$filename = "$base/$dir/$entry";
if (is_dir($filename)) {
$count += patchDir($base, "$dir/$entry");
}
}
foreach ($entries as $entry) {
$filename = "$base/$dir/$entry";
if (is_file($filename)) {
if (substr($entry, -4) != '.php') {
continue;
}
$patched = $original = file_get_contents($filename);
$patched = preg_replace('/\):\s*(\?[a-zA-Z]+|void)\s*\n/', ") /*:$1*/\n", $patched);
$patched = preg_replace('/([\(,])\s*(\?[a-zA-Z]+|void)\s+\$/', "$1 /*$2*/ \$", $patched);
$patched = preg_replace('/(private|public|protected) const/', "/*$1*/ const", $patched);
if ($patched && $patched != $original) {
file_put_contents($filename, $patched);
$count++;
}
}
}
return $count;
}
function patch(string $base, array $dirs)
{
$start = microtime(true);
$count = 0;
foreach ($dirs as $dir) {
$count += patchDir($base, $dir);
}
$end = microtime(true);
$time = ($end - $start) * 1000;
if ($count) {
fwrite(STDERR, sprintf("%d files patched in %d ms\n", $count, $time));
}
}
patch(__DIR__, ['vendor']);