Completed
Pull Request — master (#3)
by Hannes
02:16
created

AbstractResourceReader::__destruct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 4
cp 0
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 2
1
<?php
2
3
/*
4
 * This file is part of the Runalyze DEM Reader.
5
 *
6
 * (c) RUNALYZE <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace Runalyze\DEM\Provider;
13
14
use Runalyze\DEM\Exception\RuntimeException;
15
16
abstract class AbstractResourceReader implements ResourceReaderInterface
17
{
18
    /** @var resource|bool */
19
    protected $FileResource = false;
20
21
    /**
22
     * @param resource|bool $resource
23
     */
24
    public function __construct($resource = false)
25
    {
26
        if (false !== $resource) {
27
            $this->setResource($resource);
28
        }
29
    }
30
31
    public function __destruct()
32
    {
33
        $this->closeResource();
34
    }
35
36
    /**
37
     * @param  resource         $resource
38
     * @throws RuntimeException
39
     */
40
    public function setResource($resource)
41
    {
42
        $this->closeResource();
43
44
        $this->FileResource = $resource;
45
46
        if (false === $this->FileResource) {
47
            throw new RuntimeException('Provided resource is invalid.');
48
        }
49
    }
50
51
    protected function closeResource()
52
    {
53
        if (is_resource($this->FileResource)) {
54
            fclose($this->FileResource);
55
        }
56
    }
57
58
    abstract public function readHeader();
59
60
    /**
61
     * @param  int      $row
62
     * @param  int      $col
63
     * @return int|bool elevation [m] can be false if nothing retrieved or value is unknown
64
     */
65
    abstract public function getElevationFor($row, $col);
66
}
67