ServiceNominatim   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 37
c 0
b 0
f 0
ccs 6
cts 6
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A registerAssetBundle() 0 4 1
A getJs() 0 8 3
1
<?php
2
/**
3
 * @copyright Copyright (c) 2013-2019 2amigOS! Consulting Group LLC
4
 * @link http://2amigos.us
5
 * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
6
 */
7
namespace dosamigos\leaflet\plugins\geocoder;
8
9
use yii\base\InvalidConfigException;
10
use yii\helpers\Json;
11
use yii\web\JsExpression;
12
13
/**
14
 * ServiceNominatim provides the required code and js files to use Nominatim geocoding service
15
 *
16
 * @author Antonio Ramirez <[email protected]>
17
 * @link http://www.ramirezcobos.com/
18
 * @link http://www.2amigos.us/
19
 * @package dosamigos\leaflet\plugins\geocoder
20
 */
21
class ServiceNominatim extends BaseService
22
{
23
    /**
24
     * @var string the URL of the service
25
     */
26
    public $serviceUrl = '//nominatim.openstreetmap.org/';
27
    /**
28
     * @var array additional URL parameters (strings) that will be added to geocoding requests
29
     */
30
    public $geocodingQueryParams = [];
31
    /**
32
     * @var array additional URL parameters (strings) that will be added to reverse geocoding requests
33
     */
34
    public $reverseQueryParams = [];
35
36
    /**
37
     * @inheritdoc
38
     * @codeCoverageIgnore
39
     */
40
    public function registerAssetBundle($view)
41
    {
42
        ServiceNominatimAsset::register($view);
43
    }
44
45
    /**
46
     * @return \yii\web\JsExpression the javascript code for the geocoder option to be set
47
     */
48 3
    public function getJs()
49
    {
50 3
        $options['serviceUrl'] = $this->serviceUrl;
0 ignored issues
show
Coding Style Comprehensibility introduced by
$options was never initialized. Although not strictly required by PHP, it is generally a good practice to add $options = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
51 3
        $options['geocodingQueryParams'] = !empty($this->geocodingQueryParams) ? $this->geocodingQueryParams : '{}';
52 3
        $options['reverseQueryParams'] = !empty($this->reverseQueryParams) ? $this->reverseQueryParams : '{}';
53 3
        $options = Json::encode($options);
54 3
        return new JsExpression("L.Control.Geocoder.nominatim({$options})");
55
    }
56
57
}
58