Skip to content

Commit d160bd8

Browse files
authored
Declare multiple apcu_ functions as impure (#5516)
1 parent 99c018e commit d160bd8

4 files changed

Lines changed: 53 additions & 1 deletion

File tree

bin/functionMetadata_original.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@
66
'acosh' => ['hasSideEffects' => false],
77
'addcslashes' => ['hasSideEffects' => false],
88
'addslashes' => ['hasSideEffects' => false],
9+
'apcu_add' => ['hasSideEffects' => true],
10+
'apcu_cache_info' => ['hasSideEffects' => true],
11+
'apcu_cas' => ['hasSideEffects' => true],
12+
'apcu_clear_cache' => ['hasSideEffects' => true],
13+
'apcu_dec' => ['hasSideEffects' => true],
14+
'apcu_delete' => ['hasSideEffects' => true],
15+
'apcu_enabled' => ['hasSideEffects' => true],
16+
'apcu_entry' => ['hasSideEffects' => true],
17+
'apcu_exists' => ['hasSideEffects' => true],
18+
'apcu_fetch' => ['hasSideEffects' => true],
19+
'apcu_inc' => ['hasSideEffects' => true],
20+
'apcu_key_info' => ['hasSideEffects' => true],
21+
'apcu_sma_info' => ['hasSideEffects' => true],
22+
'apcu_store' => ['hasSideEffects' => true],
923
'array_change_key_case' => ['hasSideEffects' => false],
1024
'array_chunk' => ['hasSideEffects' => false],
1125
'array_column' => ['hasSideEffects' => false],

resources/functionMetadata.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,20 @@
712712
'apache_get_version' => ['hasSideEffects' => false],
713713
'apache_getenv' => ['hasSideEffects' => false],
714714
'apache_request_headers' => ['hasSideEffects' => false],
715+
'apcu_add' => ['hasSideEffects' => true],
716+
'apcu_cache_info' => ['hasSideEffects' => true],
717+
'apcu_cas' => ['hasSideEffects' => true],
718+
'apcu_clear_cache' => ['hasSideEffects' => true],
719+
'apcu_dec' => ['hasSideEffects' => true],
720+
'apcu_delete' => ['hasSideEffects' => true],
721+
'apcu_enabled' => ['hasSideEffects' => true],
722+
'apcu_entry' => ['hasSideEffects' => true],
723+
'apcu_exists' => ['hasSideEffects' => true],
724+
'apcu_fetch' => ['hasSideEffects' => true],
725+
'apcu_inc' => ['hasSideEffects' => true],
726+
'apcu_key_info' => ['hasSideEffects' => true],
727+
'apcu_sma_info' => ['hasSideEffects' => true],
728+
'apcu_store' => ['hasSideEffects' => true],
715729
'array_change_key_case' => ['hasSideEffects' => false],
716730
'array_chunk' => ['hasSideEffects' => false],
717731
'array_column' => ['hasSideEffects' => false],
@@ -1744,4 +1758,4 @@
17441758
'zlib_encode' => ['hasSideEffects' => false],
17451759
'zlib_get_coding_type' => ['hasSideEffects' => false],
17461760

1747-
];
1761+
];

tests/PHPStan/Rules/Comparison/StrictComparisonOfDifferentTypesRuleTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,4 +1197,9 @@ public function testBug14446(): void
11971197
$this->analyse([__DIR__ . '/../../Analyser/data/bug-14446.php'], []);
11981198
}
11991199

1200+
public function testBug14473(): void
1201+
{
1202+
$this->analyse([__DIR__ . '/data/bug-14519.php'], []);
1203+
}
1204+
12001205
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Bug14519;
4+
5+
$entry = apcu_fetch("key1");
6+
7+
if ($entry === false) {
8+
die();
9+
}
10+
11+
// assume long-running task when $entry exists
12+
13+
// re-fetch key "key1" again (it probably has been changed or deleted in the meantime by another process)
14+
$entry = apcu_fetch("key1");
15+
16+
// phpstan complains here, but it shouldn't
17+
if ($entry === false) {
18+
die();
19+
}

0 commit comments

Comments
 (0)