Skip to content

Commit c49e289

Browse files
Declare Memcached as impure
1 parent 9009697 commit c49e289

3 files changed

Lines changed: 39 additions & 0 deletions

File tree

stubs/Memcached.stub

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
/**
4+
* @phpstan-all-methods-impure
5+
*/
6+
class Memcached {}

tests/PHPStan/Rules/Comparison/StrictComparisonOfDifferentTypesRuleTest.php

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

1200+
public function testBug13444(): void
1201+
{
1202+
$this->analyse([__DIR__ . '/data/bug-13444.php'], []);
1203+
}
1204+
12001205
public function testBug14473(): void
12011206
{
12021207
$this->analyse([__DIR__ . '/data/bug-14519.php'], []);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Bug13444;
4+
5+
function sayStoreCas(string $key): void
6+
{
7+
$memcached = new \Memcached();
8+
9+
do {
10+
$extendedReturn = $memcached->get($key, null, \Memcached::GET_EXTENDED);
11+
12+
if ($memcached->getResultCode() !== \Memcached::RES_SUCCESS) {
13+
return;
14+
}
15+
16+
if (!is_array($extendedReturn) || !isset($extendedReturn['value']) || !isset($extendedReturn['cas'])) {
17+
return;
18+
}
19+
20+
$data = $extendedReturn['value'];
21+
$cas = $extendedReturn['cas'];
22+
\assert(is_float($cas));
23+
24+
// Do some work on the data..
25+
$memcached->cas($cas, $key, $data);
26+
27+
} while ($memcached->getResultCode() !== \Memcached::RES_SUCCESS);
28+
}

0 commit comments

Comments
 (0)