germania-kg / shipping
1.1.0
2023-01-09 14:53 UTC
Requires
- php: ^7.4|^8.0
- germania-kg/tracking: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpspec/prophecy: ^1.16
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.0
README
处理运输项的类和接口
安装
$ composer require germania-kg/shipping
要求
此包需要 germania-kg/tracking 包。
使用方法
ShipmentItemInterface
ShipmentItemInterface 扩展了 Germania\Shipping\DeliveryNoteNumberProviderInterface、Germania\Tracking\TrackingInfoAwareInterface 和 \JsonSerializable。因此提供了以下方法:
- getDeliveryNoteNumber
- getTrackingInfo
- setTrackingInfo
- jsonSerialize
ShipmentItem
ShipmentItem 类实现了 ShipmentItemInterface,并额外提供了 setTrackingInfo 和 setDeliveryNoteNumber 设置方法。
<?php use Germania\Shipping\ShipmentItem; use Germania\Tracking\TrackingInfo; // Prepare components $tracking_info = new TrackingInfo; $tracking_info->setTrackingID("foo"); $tracking_info->setTrackingLink("https://track.test.com/?id=foo"); // Use setters $item = new ShipmentItem; $item->setDeliveryNoteNumber( "123456" ); $item->setTrackingInfo( $tracking_info ); // Use getters echo $item->getDeliveryNoteNumber(); // "123456" echo $item->getTrackingInfo()->getTrackingLink(); // "https://track.test.com/?id=foo" echo $item->getTrackingInfo()->getTrackingID(); // "foo"
ShipmentItemFactory
fromArray 方法接受 array 和 ArrayAccess,这些键是必需的:
- delivery_note_number
- tracking_id
- tracking_link
传递其他任何内容将分别触发 InvalidArgumentException 或 UnexpectedValueException。
<?php use Germania\Shipping\ShipmentItemFactory; use Germania\Shipping\ShipmentItemInterface; $item_factory = new ShipmentItemFactory; $item = $item_factory->fromArray([ 'delivery_note_number' => '123456', 'tracking_id' => 'foo', 'tracking_link' => 'https://track.test.com/?id=foo' ]); echo ($item instanceOf ShipmentItemInterface) ? "OK" : "huh?";
ShipmentItemBundle
将多个运输项捆绑在一起,并允许您添加文本描述。它还实现了 \IteratorAggregate、\Countable 和 \JsonSerializable。
<?php use Germania\Shipping\ShipmentItemBundle; // Prepare $item1 = new ShipmentItem; #... $item2 = new ShipmentItem; #... $items = array( $item1, $item2 ); // Setup bundle $description = "Optional: textual desription"; $bundle = new ShipmentItemBundle( $items, $description); $bundle = new ShipmentItemBundle( $items); // Add item $bundle->push( new ShipmentItem ); // Play $array = $bundle->getDeliveryNoteNumbers(); echo $bundle->getDescription(); echo count( $bundle ); // int 3 foreach ($bundle as $item) { echo $item->getDeliveryNoteNumber(); } echo json_encode( $bundle );
开发
$ git clone https://github.com/GermaniaKG/Shipping.git shipping $ cd shipping $ composer install # Run PhpUnit $ composer test