ServicesTrait::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 27
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 17
c 2
b 0
f 0
dl 0
loc 27
rs 9.7
cc 1
nc 1
nop 3
1
<?php
2
/**
3
 * Instant Analytics plugin for Craft CMS
4
 *
5
 * Instant Analytics brings full Google Analytics support to your Twig templates
6
 *
7
 * @link      https://nystudio107.com
0 ignored issues
show
Coding Style introduced by
The tag in position 1 should be the @copyright tag
Loading history...
8
 * @copyright Copyright (c) 2022 nystudio107
0 ignored issues
show
Coding Style introduced by
@copyright tag must contain a year and the name of the copyright holder
Loading history...
9
 */
0 ignored issues
show
Coding Style introduced by
PHP version not specified
Loading history...
Coding Style introduced by
Missing @category tag in file comment
Loading history...
Coding Style introduced by
Missing @package tag in file comment
Loading history...
Coding Style introduced by
Missing @author tag in file comment
Loading history...
Coding Style introduced by
Missing @license tag in file comment
Loading history...
10
11
namespace nystudio107\instantanalytics\services;
12
13
use craft\helpers\ArrayHelper;
14
use nystudio107\instantanalytics\assetbundles\instantanalytics\InstantAnalyticsAsset;
15
use nystudio107\instantanalytics\services\Commerce as CommerceService;
16
use nystudio107\instantanalytics\services\IA as IAService;
17
use nystudio107\pluginvite\services\VitePluginService;
18
use yii\base\InvalidConfigException;
19
20
/**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
21
 * @author    nystudio107
0 ignored issues
show
Coding Style introduced by
The tag in position 1 should be the @package tag
Loading history...
Coding Style introduced by
Content of the @author tag must be in the form "Display Name <[email protected]>"
Loading history...
Coding Style introduced by
Tag value for @author tag indented incorrectly; expected 2 spaces but found 4
Loading history...
22
 * @package   InstantAnalytics
0 ignored issues
show
Coding Style introduced by
Tag value for @package tag indented incorrectly; expected 1 spaces but found 3
Loading history...
23
 * @since     1.1.16
0 ignored issues
show
Coding Style introduced by
The tag in position 3 should be the @author tag
Loading history...
Coding Style introduced by
Tag value for @since tag indented incorrectly; expected 3 spaces but found 5
Loading history...
24
 *
25
 * @property IAService $ia
26
 * @property CommerceService $commerce
27
 * @property VitePluginService $vite
28
 */
0 ignored issues
show
Coding Style introduced by
Missing @category tag in class comment
Loading history...
Coding Style introduced by
Missing @license tag in class comment
Loading history...
Coding Style introduced by
Missing @link tag in class comment
Loading history...
29
trait ServicesTrait
30
{
31
    // Public Methods
32
    // =========================================================================
33
34
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
Coding Style introduced by
Parameter $id should have a doc-comment as per coding-style.
Loading history...
Coding Style introduced by
Parameter $parent should have a doc-comment as per coding-style.
Loading history...
Coding Style introduced by
Parameter $config should have a doc-comment as per coding-style.
Loading history...
35
     * @inheritdoc
36
     */
37
    public function __construct($id, $parent = null, array $config = [])
38
    {
39
        // Constants aren't allowed in traits until PHP >= 8.2
40
        $majorVersion = '1';
41
        // Dev server container name & port are based on the major version of this plugin
42
        $devPort = 3000 + (int)$majorVersion;
43
        $versionName = 'v' . $majorVersion;
44
        // Merge in the passed config, so it our config can be overridden by Plugins::pluginConfigs['vite']
45
        // ref: https://github.com/craftcms/cms/issues/1989
46
        $config = ArrayHelper::merge([
0 ignored issues
show
Coding Style introduced by
The opening parenthesis of a multi-line function call should be the last content on the line.
Loading history...
47
            'components' => [
48
                'ia' => IAService::class,
49
                'commerce' => CommerceService::class,
50
                // Register the vite service
51
                'vite' => [
52
                    'assetClass' => InstantAnalyticsAsset::class,
53
                    'checkDevServer' => true,
54
                    'class' => VitePluginService::class,
55
                    'devServerInternal' => 'http://craft-instantanalytics-' . $versionName . '-buildchain-dev:' . $devPort,
56
                    'devServerPublic' => 'http://localhost:' . $devPort,
57
                    'errorEntry' => 'src/js/app.ts',
58
                    'useDevServer' => true,
59
                ],
60
            ]
61
        ], $config);
0 ignored issues
show
Coding Style introduced by
For multi-line function calls, the closing parenthesis should be on a new line.

If a function call spawns multiple lines, the coding standard suggests to move the closing parenthesis to a new line:

someFunctionCall(
    $firstArgument,
    $secondArgument,
    $thirdArgument
); // Closing parenthesis on a new line.
Loading history...
62
63
        parent::__construct($id, $parent, $config);
64
    }
65
66
    /**
67
     * Returns the ia service
68
     *
69
     * @return IAService The ia service
70
     * @throws InvalidConfigException
71
     */
72
    public function getIa(): IAService
73
    {
74
        return $this->get('ia');
0 ignored issues
show
Bug introduced by
The method get() does not exist on nystudio107\instantanaly...\services\ServicesTrait. Did you maybe mean getIa()? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

74
        return $this->/** @scrutinizer ignore-call */ get('ia');

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
75
    }
76
77
    /**
78
     * Returns the commerce service
79
     *
80
     * @return CommerceService The commerce service
81
     * @throws InvalidConfigException
82
     */
83
    public function getCommerce(): CommerceService
84
    {
85
        return $this->get('commerce');
86
    }
87
88
    /**
89
     * Returns the vite service
90
     *
91
     * @return VitePluginService The vite service
92
     * @throws InvalidConfigException
93
     */
94
    public function getVite(): VitePluginService
95
    {
96
        return $this->get('vite');
97
    }
98
}
99