Skip to content

Commit 3c9245e

Browse files
DOC-5673 added PHP list examples
1 parent b2a5b86 commit 3c9245e

File tree

1 file changed

+378
-0
lines changed

1 file changed

+378
-0
lines changed

local_examples/php/DtListTest.php

Lines changed: 378 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,378 @@
1+
// EXAMPLE: list_tutorial
2+
<?php
3+
4+
require 'vendor/autoload.php';
5+
6+
use Predis\Client as PredisClient;
7+
8+
class DtListTest
9+
// REMOVE_START
10+
extends PredisTestCase
11+
// REMOVE_END
12+
{
13+
public function testDtList() {
14+
$r = new PredisClient([
15+
'scheme' => 'tcp',
16+
'host' => '127.0.0.1',
17+
'port' => 6379,
18+
'password' => '',
19+
'database' => 0,
20+
]);
21+
// REMOVE_START
22+
$r->flushall();
23+
// REMOVE_END
24+
25+
// STEP_START queue
26+
$res1 = $r->lpush('bikes:repairs', 'bike:1');
27+
echo $res1 . PHP_EOL;
28+
// >>> 1
29+
30+
$res2 = $r->lpush('bikes:repairs', 'bike:2');
31+
echo $res2 . PHP_EOL;
32+
// >>> 2
33+
34+
$res3 = $r->rpop('bikes:repairs');
35+
echo $res3 . PHP_EOL;
36+
// >>> bike:1
37+
38+
$res4 = $r->rpop('bikes:repairs');
39+
echo $res4 . PHP_EOL;
40+
// >>> bike:2
41+
// STEP_END
42+
// REMOVE_START
43+
$this->assertEquals(1, $res1);
44+
$this->assertEquals(2, $res2);
45+
$this->assertEquals('bike:1', $res3);
46+
$this->assertEquals('bike:2', $res4);
47+
// REMOVE_END
48+
49+
// STEP_START stack
50+
$res5 = $r->lpush('bikes:repairs', 'bike:1');
51+
echo $res5 . PHP_EOL;
52+
// >>> 1
53+
54+
$res6 = $r->lpush('bikes:repairs', 'bike:2');
55+
echo $res6 . PHP_EOL;
56+
// >>> 2
57+
58+
$res7 = $r->lpop('bikes:repairs');
59+
echo $res7 . PHP_EOL;
60+
// >>> bike:2
61+
62+
$res8 = $r->lpop('bikes:repairs');
63+
echo $res8 . PHP_EOL;
64+
// >>> bike:1
65+
// STEP_END
66+
// REMOVE_START
67+
$this->assertEquals(1, $res5);
68+
$this->assertEquals(2, $res6);
69+
$this->assertEquals('bike:2', $res7);
70+
$this->assertEquals('bike:1', $res8);
71+
// REMOVE_END
72+
73+
// STEP_START llen
74+
$res9 = $r->llen('bikes:repairs');
75+
echo $res9 . PHP_EOL;
76+
// >>> 0
77+
// STEP_END
78+
// REMOVE_START
79+
$this->assertEquals(0, $res9);
80+
// REMOVE_END
81+
82+
// STEP_START lmove_lrange
83+
$res10 = $r->lpush('bikes:repairs', 'bike:1');
84+
echo $res10 . PHP_EOL;
85+
// >>> 1
86+
87+
$res11 = $r->lpush('bikes:repairs', 'bike:2');
88+
echo $res11 . PHP_EOL;
89+
// >>> 2
90+
91+
$res12 = $r->lmove('bikes:repairs', 'bikes:finished', 'LEFT', 'LEFT');
92+
echo $res12 . PHP_EOL;
93+
// >>> 'bike:2'
94+
95+
$res13 = $r->lrange('bikes:repairs', 0, -1);
96+
echo json_encode($res13) . PHP_EOL;
97+
// >>> ['bike:1']
98+
99+
$res14 = $r->lrange('bikes:finished', 0, -1);
100+
echo json_encode($res14) . PHP_EOL;
101+
// >>> ['bike:2']
102+
// STEP_END
103+
// REMOVE_START
104+
$this->assertEquals(1, $res10);
105+
$this->assertEquals(2, $res11);
106+
$this->assertEquals('bike:2', $res12);
107+
$this->assertEquals(['bike:1'], $res13);
108+
$this->assertEquals(['bike:2'], $res14);
109+
$r->del('bikes:repairs');
110+
// REMOVE_END
111+
112+
// STEP_START lpush_rpush
113+
$res15 = $r->rpush('bikes:repairs', 'bike:1');
114+
echo $res15 . PHP_EOL;
115+
// >>> 1
116+
117+
$res16 = $r->rpush('bikes:repairs', 'bike:2');
118+
echo $res16 . PHP_EOL;
119+
// >>> 2
120+
121+
$res17 = $r->lpush('bikes:repairs', 'bike:important_bike');
122+
echo $res17 . PHP_EOL;
123+
// >>> 3
124+
125+
$res18 = $r->lrange('bikes:repairs', 0, -1);
126+
echo json_encode($res18) . PHP_EOL;
127+
// >>> ['bike:important_bike', 'bike:1', 'bike:2']
128+
// STEP_END
129+
// REMOVE_START
130+
$this->assertEquals(1, $res15);
131+
$this->assertEquals(2, $res16);
132+
$this->assertEquals(3, $res17);
133+
$this->assertEquals(['bike:important_bike', 'bike:1', 'bike:2'], $res18);
134+
$r->del('bikes:repairs');
135+
// REMOVE_END
136+
137+
// STEP_START variadic
138+
$res19 = $r->rpush('bikes:repairs', 'bike:1', 'bike:2', 'bike:3');
139+
echo $res19 . PHP_EOL;
140+
// >>> 3
141+
142+
$res20 = $r->lpush('bikes:repairs', 'bike:important_bike', 'bike:very_important_bike');
143+
echo $res20 . PHP_EOL;
144+
// >>> 5
145+
146+
$res21 = $r->lrange('bikes:repairs', 0, -1);
147+
echo json_encode($res21) . PHP_EOL;
148+
// >>> ['bike:very_important_bike', 'bike:important_bike', 'bike:1', ...
149+
// STEP_END
150+
// REMOVE_START
151+
$this->assertEquals(3, $res19);
152+
$this->assertEquals(5, $res20);
153+
$this->assertEquals([
154+
'bike:very_important_bike',
155+
'bike:important_bike',
156+
'bike:1',
157+
'bike:2',
158+
'bike:3',
159+
], $res21);
160+
$r->del('bikes:repairs');
161+
// REMOVE_END
162+
163+
// STEP_START lpop_rpop
164+
$res22 = $r->rpush('bikes:repairs', 'bike:1', 'bike:2', 'bike:3');
165+
echo $res22 . PHP_EOL;
166+
// >>> 3
167+
168+
$res23 = $r->rpop('bikes:repairs');
169+
echo $res23 . PHP_EOL;
170+
// >>> 'bike:3'
171+
172+
$res24 = $r->lpop('bikes:repairs');
173+
echo $res24 . PHP_EOL;
174+
// >>> 'bike:1'
175+
176+
$res25 = $r->rpop('bikes:repairs');
177+
echo $res25 . PHP_EOL;
178+
// >>> 'bike:2'
179+
180+
$res26 = $r->rpop('bikes:repairs');
181+
echo $res26 . PHP_EOL;
182+
// >>> None
183+
// STEP_END
184+
// REMOVE_START
185+
$this->assertEquals(3, $res22);
186+
$this->assertEquals('bike:3', $res23);
187+
$this->assertEquals('bike:1', $res24);
188+
$this->assertEquals('bike:2', $res25);
189+
$this->assertNull($res26);
190+
// REMOVE_END
191+
192+
// STEP_START ltrim
193+
$res27 = $r->rpush('bikes:repairs', 'bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5');
194+
echo $res27 . PHP_EOL;
195+
// >>> 5
196+
197+
$res28 = $r->ltrim('bikes:repairs', 0, 2);
198+
echo $res28 . PHP_EOL;
199+
// >>> True
200+
201+
$res29 = $r->lrange('bikes:repairs', 0, -1);
202+
echo json_encode($res29) . PHP_EOL;
203+
// >>> ['bike:1', 'bike:2', 'bike:3']
204+
// STEP_END
205+
// REMOVE_START
206+
$this->assertEquals(5, $res27);
207+
$this->assertEquals('OK', $res28);
208+
$this->assertEquals(['bike:1', 'bike:2', 'bike:3'], $res29);
209+
$r->del('bikes:repairs');
210+
// REMOVE_END
211+
212+
// STEP_START ltrim_end_of_list
213+
$res27 = $r->rpush('bikes:repairs', 'bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5');
214+
echo $res27 . PHP_EOL;
215+
// >>> 5
216+
217+
$res28 = $r->ltrim('bikes:repairs', -3, -1);
218+
echo $res28 . PHP_EOL;
219+
// >>> True
220+
221+
$res29 = $r->lrange('bikes:repairs', 0, -1);
222+
echo json_encode($res29) . PHP_EOL;
223+
// >>> ['bike:3', 'bike:4', 'bike:5']
224+
// STEP_END
225+
// REMOVE_START
226+
$this->assertEquals(5, $res27);
227+
$this->assertEquals('OK', $res28);
228+
$this->assertEquals(['bike:3', 'bike:4', 'bike:5'], $res29);
229+
$r->del('bikes:repairs');
230+
// REMOVE_END
231+
232+
// STEP_START brpop
233+
$res31 = $r->rpush('bikes:repairs', 'bike:1', 'bike:2');
234+
echo $res31 . PHP_EOL;
235+
// >>> 2
236+
237+
$res32 = $r->brpop('bikes:repairs', 1);
238+
echo json_encode($res32) . PHP_EOL;
239+
// >>> ['bikes:repairs', 'bike:2']
240+
241+
$res33 = $r->brpop('bikes:repairs', 1);
242+
echo json_encode($res33) . PHP_EOL;
243+
// >>> ['bikes:repairs', 'bike:1']
244+
245+
$res34 = $r->brpop('bikes:repairs', 1);
246+
echo json_encode($res34) . PHP_EOL;
247+
// >>> None
248+
// STEP_END
249+
// REMOVE_START
250+
$this->assertEquals(2, $res31);
251+
$this->assertEquals(['bikes:repairs', 'bike:2'], $res32);
252+
$this->assertEquals(['bikes:repairs', 'bike:1'], $res33);
253+
$this->assertNull($res34);
254+
$r->del('bikes:repairs');
255+
$r->del('new_bikes');
256+
// REMOVE_END
257+
258+
// STEP_START rule_1
259+
$res35 = $r->del('new_bikes');
260+
echo $res35 . PHP_EOL;
261+
// >>> 0
262+
263+
$res36 = $r->lpush('new_bikes', 'bike:1', 'bike:2', 'bike:3');
264+
echo $res36 . PHP_EOL;
265+
// >>> 3
266+
// STEP_END
267+
// REMOVE_START
268+
$this->assertEquals(0, $res35);
269+
$this->assertEquals(3, $res36);
270+
$r->del('new_bikes');
271+
// REMOVE_END
272+
273+
// STEP_START rule_1.1
274+
$res37 = $r->set('new_bikes', 'bike:1');
275+
echo $res37 . PHP_EOL;
276+
// >>> True
277+
278+
$res38 = $r->type('new_bikes');
279+
echo $res38 . PHP_EOL;
280+
// >>> 'string'
281+
282+
try {
283+
$res39 = $r->lpush('new_bikes', 'bike:2', 'bike:3');
284+
// >>> redis.exceptions.ResponseError:
285+
// >>> WRONGTYPE Operation against a key holding the wrong kind of value
286+
} catch (\Predis\Response\ServerException $e) {
287+
echo $e->getMessage() . PHP_EOL;
288+
}
289+
// STEP_END
290+
// REMOVE_START
291+
$this->assertEquals('OK', $res37);
292+
$this->assertEquals('string', $res38);
293+
// We caught an exception for WRONGTYPE above; ensure it's indeed WRONGTYPE
294+
try {
295+
$r->lpush('new_bikes', 'bike:2', 'bike:3');
296+
$this->fail('Expected WRONGTYPE exception was not thrown');
297+
} catch (\Predis\Response\ServerException $e) {
298+
$this->assertStringContainsString('wrong kind of value', strtolower($e->getMessage()));
299+
}
300+
$r->del('new_bikes');
301+
// REMOVE_END
302+
303+
// STEP_START rule_2
304+
$res36 = $r->lpush('bikes:repairs', 'bike:1', 'bike:2', 'bike:3');
305+
echo $res36 . PHP_EOL;
306+
// >>> 3
307+
308+
$res40 = $r->exists('bikes:repairs');
309+
echo $res40 . PHP_EOL;
310+
// >>> 1
311+
312+
$res41 = $r->lpop('bikes:repairs');
313+
echo $res41 . PHP_EOL;
314+
// >>> 'bike:3'
315+
316+
$res42 = $r->lpop('bikes:repairs');
317+
echo $res42 . PHP_EOL;
318+
// >>> 'bike:2'
319+
320+
$res43 = $r->lpop('bikes:repairs');
321+
echo $res43 . PHP_EOL;
322+
// >>> 'bike:1'
323+
324+
$res44 = $r->exists('bikes:repairs');
325+
echo $res44 . PHP_EOL;
326+
// >>> False
327+
// STEP_END
328+
// REMOVE_START
329+
$this->assertEquals(3, $res36);
330+
$this->assertEquals(1, $res40);
331+
$this->assertEquals('bike:3', $res41);
332+
$this->assertEquals('bike:2', $res42);
333+
$this->assertEquals('bike:1', $res43);
334+
$this->assertEquals(0, $res44);
335+
$r->del('bikes:repairs');
336+
// REMOVE_END
337+
338+
// STEP_START rule_3
339+
$res45 = $r->del('bikes:repairs');
340+
echo $res45 . PHP_EOL;
341+
// >>> 0
342+
343+
$res46 = $r->llen('bikes:repairs');
344+
echo $res46 . PHP_EOL;
345+
// >>> 0
346+
347+
$res47 = $r->lpop('bikes:repairs');
348+
echo $res47 . PHP_EOL;
349+
// >>> None
350+
// STEP_END
351+
// REMOVE_START
352+
$this->assertEquals(0, $res45);
353+
$this->assertEquals(0, $res46);
354+
$this->assertNull($res47);
355+
// REMOVE_END
356+
357+
// STEP_START ltrim.1
358+
$res48 = $r->lpush('bikes:repairs', 'bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5');
359+
echo $res48 . PHP_EOL;
360+
// >>> 5
361+
362+
$res49 = $r->ltrim('bikes:repairs', 0, 2);
363+
echo $res49 . PHP_EOL;
364+
// >>> True
365+
366+
$res50 = $r->lrange('bikes:repairs', 0, -1);
367+
echo json_encode($res50) . PHP_EOL;
368+
// >>> ['bike:5', 'bike:4', 'bike:3']
369+
// STEP_END
370+
// REMOVE_START
371+
$this->assertEquals(5, $res48);
372+
$this->assertEquals('OK', $res49);
373+
$this->assertEquals(['bike:5', 'bike:4', 'bike:3'], $res50);
374+
$r->del('bikes:repairs');
375+
// REMOVE_END
376+
}
377+
}
378+

0 commit comments

Comments
 (0)