Transactions   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 0
dl 0
loc 77
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A multi() 0 4 1
A exec() 0 4 1
A discard() 0 4 1
A watch() 0 4 1
A unwatch() 0 4 1
1
<?php
2
3
namespace Webdcg\Redis\Traits;
4
5
trait Transactions
6
{
7
    /**
8
     * Marks the start of a transaction block. Subsequent commands will be
9
     * queued for atomic execution using EXEC.
10
     * See: https://redis.io/commands/multi.
11
     *
12
     * @return transaction context
13
     */
14
    public function multi()
15
    {
16
        return $this->redis->multi();
0 ignored issues
show
Bug introduced by
The property redis does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
17
    }
18
19
20
    /**
21
     * Executes all previously queued commands in a transaction and restores
22
     * the connection state to normal.
23
     *
24
     * See: https://redis.io/commands/exec.
25
     *
26
     * @return array    each element being the reply to each of the commands
27
     *                  in the atomic transaction.
28
     */
29
    public function exec($multi): array
30
    {
31
        return $multi->exec();
32
    }
33
34
35
    /**
36
     * Flushes all previously queued commands in a transaction and restores the
37
     * connection state to normal.
38
     *
39
     * See: https://redis.io/commands/discard.
40
     *
41
     * @param   $multi
42
     *
43
     * @return bool
44
     */
45
    public function discard(\Redis $multi): bool
46
    {
47
        return $multi->discard();
48
    }
49
50
51
    /**
52
     * Marks the given keys to be watched for conditional execution of a
53
     * transaction.
54
     *
55
     * See: https://redis.io/commands/watch.
56
     *
57
     * @param  splat $keys
58
     *
59
     * @return bool
60
     */
61
    public function watch(...$keys): bool
62
    {
63
        return $this->redis->watch(...$keys);
64
    }
65
66
67
    /**
68
     * Flushes all the previously watched keys for a transaction.
69
     * If you call EXEC or DISCARD, there's no need to manually call UNWATCH.
70
     *
71
     * See: https://redis.io/commands/unwatch.
72
     *
73
     * @param  splat $keys
74
     *
75
     * @return bool
76
     */
77
    public function unwatch(...$keys): bool
78
    {
79
        return $this->redis->unwatch(...$keys);
80
    }
81
}
82