vasildakov/shipping

v0.1.0-alpha 2023-12-30 12:50 UTC

This package is auto-updated.

Last update: 2024-09-09 21:00:11 UTC


README

build Scrutinizer Code Quality Code Coverage Total Downloads

特性

此库符合 PSR-7: HTTP消息接口PSR-17: HTTP工厂PSR-18: HTTP客户端

安装

使用Composer

$ composer require vasildakov/shipping

测试

$ ./vendor/bin/phpunit 

# with code coverage
$ ./vendor/bin/phpunit --coverage-html ./build/coverage

配置

...

将适配器配置添加到项目根目录下的 .env 文件中。请确保将 .env 文件添加到 .gitignore 文件中,以免将其提交到代码中

SPEEDY_USERNAME="username"
SPEEDY_PASSWORD="password"
SPEEDY_LANGUAGE="EN"

ECONT_USERNAME="username"
ECONT_PASSWORD="password"

使用方法

以下是如何使用Shipping的一个简单示例。如你所见,Shipping有一个一致且经过深思熟虑的API。尽可能多地,我们尝试抽象不同物流网关之间的差异。

<?php

$econt  = Shipping::create('Econt');

$request = new GetCountriesRequest(name: 'Bul');

/** @var GetCountriesResponse $response */
$response = $econt->getCountries();
<?php

use VasilDakov\Shipping\Shipping;
use VasilDakov\Shipping\Adapter\EcontAdapter;
use VasilDakov\Shipping\Adapter\SpeedyAdapter;

// using strings
$econt  = Shipping::create('Econt');
$speedy = Shipping::create('Speedy');


// ... or using class name
$econt  = Shipping::create(EcontAdapter::class);
$speedy = Shipping::create(SpeedyAdapter::class);

服务

1 国家

<?php

$econt  = Shipping::create('Econt');

$request = new GetCountriesRequest(name: 'Bul');

/** @var GetCountriesResponse $response */
$response = $econt->getCountries();

foreach ($response->countries as $country) {
    dump($country);
}

2 城市

<?php
$econt  = Shipping::create('Econt');

$request = new GetCitiesRequest(isoAlpha3: 'BGR', name: null);

/** @var GetCitiesResponse $response */
$response = $econt->getCities($request);

foreach ($response->cities as $city) {
    dump($city);
}

3 办公室

<?php
$econt  = Shipping::create('Econt');

$request = new GetOfficesRequest(isoAlpha3: 'BGR', name: null);

/** @var GetCitiesResponse $response */
$response = $econt->getOffices($request);

foreach ($response->offices as $office) {
    dump($office);
}

许可

代码在 MIT许可 下发布