vasildakov / shipping
物流库
v0.1.0-alpha
2023-12-30 12:50 UTC
Requires
- php: >=8.1
- eventsauce/object-hydrator: dev-main
- jms/serializer: ^3.29
- laminas/laminas-hydrator: ^4.15
- selective/transformer: dev-master
- vasildakov/econt: dev-main
- vasildakov/speedy: ^1.0@alpha
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- friendsofphp/php-cs-fixer: dev-master
- php-coveralls/php-coveralls: dev-master
- phpmd/phpmd: dev-master
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: dev-master
- squizlabs/php_codesniffer: 4.0.x-dev
- symfony/var-dumper: 7.1.x-dev
- theseer/phpdox: dev-master
- vimeo/psalm: 4.x-dev
This package is auto-updated.
Last update: 2024-09-09 21:00:11 UTC
README
特性
此库符合 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许可 下发布