Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
namespace Laravel\SerializableClosure;
4
 
5
use Closure;
6
 
7
class UnsignedSerializableClosure
8
{
9
    /**
10
     * The closure's serializable.
11
     *
12
     * @var \Laravel\SerializableClosure\Contracts\Serializable
13
     */
14
    protected $serializable;
15
 
16
    /**
17
     * Creates a new serializable closure instance.
18
     *
19
     * @param  \Closure  $closure
20
     * @return void
21
     */
22
    public function __construct(Closure $closure)
23
    {
24
        $this->serializable = new Serializers\Native($closure);
25
    }
26
 
27
    /**
28
     * Resolve the closure with the given arguments.
29
     *
30
     * @return mixed
31
     */
32
    public function __invoke()
33
    {
34
        return call_user_func_array($this->serializable, func_get_args());
35
    }
36
 
37
    /**
38
     * Gets the closure.
39
     *
40
     * @return \Closure
41
     */
42
    public function getClosure()
43
    {
44
        return $this->serializable->getClosure();
45
    }
46
 
47
    /**
48
     * Get the serializable representation of the closure.
49
     *
1441 ariadna 50
     * @return array{serializable: \Laravel\SerializableClosure\Contracts\Serializable}
1 efrain 51
     */
52
    public function __serialize()
53
    {
54
        return [
55
            'serializable' => $this->serializable,
56
        ];
57
    }
58
 
59
    /**
60
     * Restore the closure after serialization.
61
     *
1441 ariadna 62
     * @param  array{serializable: \Laravel\SerializableClosure\Contracts\Serializable}  $data
1 efrain 63
     * @return void
64
     */
65
    public function __unserialize($data)
66
    {
67
        $this->serializable = $data['serializable'];
68
    }
69
}