Completed
Push — master ( ccec40...a46923 )
by Timo
08:45
created

DataLink::generate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace hamburgscleanest\DataTables\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
7
class DataLink {
8
9
    /** @var string */
10
    private $_url;
11
12
    /**
13
     * DataLink constructor.
14
     * @param string $url
15
     */
16 5
    public function __construct(string $url)
17
    {
18 5
        $this->_url = $url;
19 5
    }
20
21
    /**
22
     * Get the values for the needed parameters
23
     *
24
     * @param Model $rowModel
25
     * @return array
26
     */
27 5
    private function _getFieldValues(Model $rowModel) : array
28
    {
29 5
        $fieldValues = [];
30 5
        foreach ($rowModel->getAttributes() as $field => $value)
31
        {
32 5
            $fieldValues['{' . $field . '}'] = $value;
33
        }
34
35 5
        return $fieldValues;
36
    }
37
38
    /**
39
     * For example:
40
     *      $url = '/users/{id}';
41
     *      $parameters = ['id' => 1337];
42
     * --------------------------------
43
     *    = '/users/1337'
44
     *
45
     * @param Model $rowModel
46
     * @return string
47
     */
48 5
    public function generate(Model $rowModel) : string
49
    {
50 5
        return \strtr($this->_url, $this->_getFieldValues($rowModel));
51
    }
52
}