Renderer::newScript()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 5
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 2
1
<?php
2
3
namespace ByTIC\GoogleAnalytics\Tracking\Renderer;
4
5
use ByTIC\GoogleAnalytics\Tracking\GoogleAnalytics;
6
use ByTIC\GoogleAnalytics\Tracking\Renderer\Script\AnalyticsJs;
7
use ByTIC\GoogleAnalytics\Tracking\Renderer\Script\AbstractScript;
8
use ByTIC\GoogleAnalytics\Tracking\Traits\HasRenderer;
9
10
/**
11
 * Class Renderer
12
 * @package ByTIC\GoogleAnalytics\Tracking\Renderer
13
 */
14
class Renderer
15
{
16
    const DEFAULT_RENDERER = 'AnalyticsJs';
17
18
    /**
19
     * @param GoogleAnalytics|HasRenderer $analytics
20
     * @param string $name
21
     * @return string
22
     */
23
    public static function render($analytics, $name = SELF::DEFAULT_RENDERER)
24
    {
25
        $script = self::newScript($analytics, $name);
0 ignored issues
show
Bug introduced by
It seems like $analytics defined by parameter $analytics on line 23 can also be of type object<ByTIC\GoogleAnaly...ing\Traits\HasRenderer>; however, ByTIC\GoogleAnalytics\Tr...r\Renderer::newScript() does only seem to accept object<ByTIC\GoogleAnaly...acking\GoogleAnalytics>, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
26
        return $script->render();
27
    }
28
29
    /**
30
     * @param string $name
31
     * @param GoogleAnalytics $analytics
32
     * @return AbstractScript
33
     */
34
    protected static function newScript($analytics, $name)
35
    {
36
        $class = '\ByTIC\GoogleAnalytics\Tracking\Renderer\Script\\' . $name;
37
        /** @var AbstractScript $script */
38
        $script = new $class();
39
        $script->setGoogleAnalytics($analytics);
40
        return $script;
41
    }
42
}