PluginProbe
PostNL for WooCommerce / 4.4.0
PostNL for WooCommerce v4.4.0
5.9.12 5.9.11 5.9.10 5.9.9 5.9.8 5.9.7 5.9.6 trunk 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 3.1.4 3.1.5 3.1.6 3.1.7 4.0.0 4.0.1 4.0.2 4.3.2 4.3.3 4.4.0 4.4.1 All 72 releases
woo-postnl / vendor / myparcelnl / sdk / src / Factory / DeliveryOptionsAdapterFactory.php

DeliveryOptionsAdapterFactory.php in PostNL for WooCommerce 4.4.0, at vendor/myparcelnl/sdk/src/Factory/DeliveryOptionsAdapterFactory.php

42 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2 /**
3 * If you want to add improvements, please create a fork in our GitHub:
4 * https://github.com/myparcelnl
5 *
6 * @author Richard Perdaan <[email protected]>
7 * @copyright 2010-2019 MyParcel
8 * @license http://creativecommons.org/licenses/by-nc-nd/3.0/nl/deed.en_US CC BY-NC-ND 3.0 NL
9 * @link https://github.com/myparcelnl/sdk
10 * @since File available since Release v3.0.0
11 */
12
13 namespace MyParcelNL\Sdk\src\Factory;
14
15 use BadMethodCallException;
16 use MyParcelNL\Sdk\src\Adapter\DeliveryOptions\AbstractDeliveryOptionsAdapter;
17 use MyParcelNL\Sdk\src\Adapter\DeliveryOptions\DeliveryOptionsV2Adapter;
18 use MyParcelNL\Sdk\src\Adapter\DeliveryOptions\DeliveryOptionsV3Adapter;
19 use MyParcelNL\Sdk\src\Support\Arr;
20
21 class DeliveryOptionsAdapterFactory
22 {
23 /**
24 * @param array $deliveryOptionsData
25 *
26 * @return \MyParcelNL\Sdk\src\Adapter\DeliveryOptions\AbstractDeliveryOptionsAdapter
27 * @throws \Exception
28 */
29 public static function create(array $deliveryOptionsData): AbstractDeliveryOptionsAdapter
30 {
31 $deliveryOptionsData = Arr::fromObject($deliveryOptionsData);
32
33 if (key_exists('time', $deliveryOptionsData) && is_array($deliveryOptionsData["time"])) {
34 return new DeliveryOptionsV2Adapter($deliveryOptionsData);
35 } elseif (key_exists('deliveryType', $deliveryOptionsData)) {
36 return new DeliveryOptionsV3Adapter($deliveryOptionsData);
37 }
38
39 throw new BadMethodCallException("Can't create DeliveryOptions. No suitable adapter found");
40 }
41 }
42