Completed
Push — master ( 6d9ae5...9656aa )
by
18:43 queued 08:49
created

Refund::path()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 2
1
<?php
2
3
/*
4
 * This file is part of the PhpMob package.
5
 *
6
 * (c) Ishmael Doss <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace PhpMob\Omise\Api;
13
14
use PhpMob\Omise\Api;
15
use PhpMob\Omise\Domain\Refund as Domain;
16
use PhpMob\Omise\Domain\Charge;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, PhpMob\Omise\Api\Charge.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
17
use PhpMob\Omise\Domain\Pagination;
18
19
/**
20
 * @author Ishmael Doss <[email protected]>
21
 *
22
 * @see https://www.omise.co/refunds-api
23
 */
24
final class Refund extends Api
25
{
26
    /**
27
     * @param string $chargeId
28
     * @param string $refundId
29
     *
30
     * @return string
31
     */
32
    private static function path($chargeId, $refundId)
33
    {
34
        return "/charges/$chargeId/refunds/$refundId";
35
    }
36
37
    /**
38
     * @param array $parameters
39
     *
40
     * @return Pagination
41
     */
42
    public function all(array $parameters = [])
43
    {
44
        return $this->doRequest('GET', '/refunds', $parameters);
45
    }
46
47
    /**
48
     * @param Charge $charge
49
     * @param array $parameters
50
     *
51
     * @return Pagination
52
     */
53
    public function charge(Charge $charge, array $parameters = [])
54
    {
55
        self::assertNotEmpty($charge->id, 'Charge Id cannot be empty.');
56
57
        return $this->doRequest('GET', "/charges/$charge->id/refunds", $parameters);
58
    }
59
60
    /**
61
     * @param string $chargeId
62
     * @param string $id
63
     *
64
     * @return Domain
65
     */
66
    public function find($chargeId, $id)
67
    {
68
        self::assertNotEmpty($chargeId && $id, 'ChargeId Id or Id cannot be empty.');
69
70
        return $this->doRequest('GET', self::path($chargeId, $id));
71
    }
72
73
    /**
74
     * @param Domain $recipient
75
     */
76
    public function refresh(Domain $recipient)
77
    {
78
        $recipient->updateStore($this->find(@$recipient->charge->id, $recipient->id)->toArray());
79
    }
80
}
81