Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
namespace GuzzleHttp\Promise;
4
 
5
final class Create
6
{
7
    /**
8
     * Creates a promise for a value if the value is not a promise.
9
     *
10
     * @param mixed $value Promise or value.
11
     *
12
     * @return PromiseInterface
13
     */
14
    public static function promiseFor($value)
15
    {
16
        if ($value instanceof PromiseInterface) {
17
            return $value;
18
        }
19
 
20
        // Return a Guzzle promise that shadows the given promise.
21
        if (is_object($value) && method_exists($value, 'then')) {
22
            $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
23
            $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
24
            $promise = new Promise($wfn, $cfn);
25
            $value->then([$promise, 'resolve'], [$promise, 'reject']);
26
            return $promise;
27
        }
28
 
29
        return new FulfilledPromise($value);
30
    }
31
 
32
    /**
33
     * Creates a rejected promise for a reason if the reason is not a promise.
34
     * If the provided reason is a promise, then it is returned as-is.
35
     *
36
     * @param mixed $reason Promise or reason.
37
     *
38
     * @return PromiseInterface
39
     */
40
    public static function rejectionFor($reason)
41
    {
42
        if ($reason instanceof PromiseInterface) {
43
            return $reason;
44
        }
45
 
46
        return new RejectedPromise($reason);
47
    }
48
 
49
    /**
50
     * Create an exception for a rejected promise value.
51
     *
52
     * @param mixed $reason
53
     *
54
     * @return \Exception|\Throwable
55
     */
56
    public static function exceptionFor($reason)
57
    {
58
        if ($reason instanceof \Exception || $reason instanceof \Throwable) {
59
            return $reason;
60
        }
61
 
62
        return new RejectionException($reason);
63
    }
64
 
65
    /**
66
     * Returns an iterator for the given value.
67
     *
68
     * @param mixed $value
69
     *
70
     * @return \Iterator
71
     */
72
    public static function iterFor($value)
73
    {
74
        if ($value instanceof \Iterator) {
75
            return $value;
76
        }
77
 
78
        if (is_array($value)) {
79
            return new \ArrayIterator($value);
80
        }
81
 
82
        return new \ArrayIterator([$value]);
83
    }
84
}