AvailabilityDependencyProvider   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 8
dl 0
loc 36
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getCartItemQuantityCounterStrategyPlugins() 0 4 1
A getAvailabilityStrategyPlugins() 0 4 1
A getBatchAvailabilityStrategyPlugins() 0 11 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
declare(strict_types = 1);
9
10
namespace Pyz\Zed\Availability;
11
12
use Spryker\Zed\Availability\AvailabilityDependencyProvider as SprykerAvailabilityDependencyProvider;
13
use Spryker\Zed\Availability\Communication\Plugin\Cart\ProductConcreteBatchAvailabilityStrategyPlugin;
14
use Spryker\Zed\ProductConfigurationCart\Communication\Plugin\Availability\ProductConfigurationCartItemQuantityCounterStrategyPlugin;
15
use Spryker\Zed\SalesOrderAmendment\Communication\Plugin\Availability\OrderAmendmentQuantityBatchAvailabilityStrategyPlugin;
16
use SprykerShop\Zed\DateTimeConfiguratorPageExample\Communication\Plugin\Availability\ExampleDateTimeConfiguratorAvailabilityStrategyPlugin;
17
18
class AvailabilityDependencyProvider extends SprykerAvailabilityDependencyProvider
19
{
20
    /**
21
     * @return array<\Spryker\Zed\AvailabilityExtension\Dependency\Plugin\AvailabilityStrategyPluginInterface>
22
     */
23
    protected function getAvailabilityStrategyPlugins(): array
24
    {
25
        return [
26
            new ExampleDateTimeConfiguratorAvailabilityStrategyPlugin(),
27
        ];
28
    }
29
30
    /**
31
     * @return array<\Spryker\Zed\AvailabilityExtension\Dependency\Plugin\BatchAvailabilityStrategyPluginInterface>
32
     */
33
    protected function getBatchAvailabilityStrategyPlugins(): array
34
    {
35
        return [
0 ignored issues
show
Bug Best Practice introduced by
The expression return array(new Spryker...bilityStrategyPlugin()) returns the type array<integer,Spryker\Ze...labilityStrategyPlugin> which is incompatible with the return type mandated by Spryker\Zed\Availability...bilityStrategyPlugins() of Spryker\Zed\Availability...rategyPluginInterface[].

In the issue above, the returned value is violating the contract defined by the mentioned interface.

Let's take a look at an example:

interface HasName {
    /** @return string */
    public function getName();
}

class Name {
    public $name;
}

class User implements HasName {
    /** @return string|Name */
    public function getName() {
        return new Name('foo'); // This is a violation of the ``HasName`` interface
                                // which only allows a string value to be returned.
    }
}
Loading history...
36
            /*
37
             * ProductConcreteBatchAvailabilityStrategyPlugin needs to be after all other implementations.
38
             */
39
            new ProductConcreteBatchAvailabilityStrategyPlugin(),
40
            /*
41
             * OrderAmendmentQuantityBatchAvailabilityStrategyPlugin needs to be after all other implementations including ProductConcreteBatchAvailabilityStrategyPlugin.
42
             */
43
            new OrderAmendmentQuantityBatchAvailabilityStrategyPlugin(),
44
        ];
45
    }
46
47
    /**
48
     * @return array<\Spryker\Zed\AvailabilityExtension\Dependency\Plugin\CartItemQuantityCounterStrategyPluginInterface>
49
     */
50
    protected function getCartItemQuantityCounterStrategyPlugins(): array
51
    {
52
        return [
53
            new ProductConfigurationCartItemQuantityCounterStrategyPlugin(),
54
        ];
55
    }
56
}
57