PHP code example of bugviktor90 / delivery-calculator

1. Go to this page and download the library: Download bugviktor90/delivery-calculator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

bugviktor90 / delivery-calculator example snippets


$request = new Request(
    'г. Москва, ул. 1905 года, 1',              //адрес отправителя
    'г. Новосибирск, ул. Ленина, 1',            //адрес получателя
    [
        new RequestItem(100, 200, 300, 5.5, 5), //позиция 1. Ширина 100мм, Длина 200мм, Высота 300мм, Вес 5.5кг, 5 штук
        new RequestItem(1000, 500, 400, 20)     //позиция 2. Ширина 1000мм, Длина 500мм, Высота 400мм, Вес 20кг, 1 штука
    ]
);

//создаем калькулятор
$deliveryCalculator = new Calculator();
//добавляем нужные провайдеры по мере необходимости
$deliveryCalculator->addProvider(new AProvider());
//провайдер может принимать нужные настройки
$deliveryCalculator->addProvider(new BProvider(['url' => 'http://someurl.com/api']));

//создаем провайдер A
$aProvider = new AProvider([
    'url' => 'http://someurl.com/api', 
    'accessKey' => 'someAccessKey', 
    'clientId' => 'someClientId'
]);

//создаем провайдер B
$bProvider = new BProvider(['url' => 'http://anotherurl/api/delivery']);
//создаем калькулятор и сразу устанавливаем нужные провайдеры
$deliveryCalculator = new Calculator([$aProvider, $bProvider]);

//решили добавить еще один провайдер
$localProvider = new LocalProvider(['volumeRate' => 3000, 'weightRate' => 10]);
$deliveryCalculator->addProvider($localProvider);

//и удалить ненужный
$deliveryCalculator->removeProvider($bProvider);


//получить результат для всех установленных провайдеров
$result = $deliveryCalculator->calculateAll($request);

//получить результат для конкретного провайдера
$result = $deliveryCalculator->calculate($request, $aProvider);

//пример возвращаемого объекта, при работе с двумя провайдерами
DeliveryCalculator\Result\Result Object
(
    [items:protected] => Array
        (
            [DeliveryCalculator\Providers\AProvider] => DeliveryCalculator\Result\ResultItem Object
                (
                    [cost:protected] => 850
                    [date:protected] => DateTime Object
                        (
                            [date] => 2021-03-05 08:23:56.283472
                            [timezone_type] => 3
                            [timezone] => UTC
                        )

                )

            [DeliveryCalculator\Providers\BProvider] => DeliveryCalculator\Result\ResultItem Object
                (
                    [cost:protected] => 1400
                    [date:protected] => DateTime Object
                        (
                            [date] => 2021-03-10 00:00:00.000000
                            [timezone_type] => 3
                            [timezone] => UTC
                        )

                )
        )
)

//получение минимальной стоимости доставки
$result->getMinCost();

//получение минимальной даты доставки
$result->getMinDate();