stefandoorn / 3dbinpacking-php-api
3dbinpacking.com PHP API
Installs: 1 855
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=5.5
- doctrine/cache: ^1.4
- guzzlehttp/guzzle: ^6.0
- psr/log: ^1.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: ^4.8|^5.0
This package is auto-updated.
Last update: 2022-02-01 12:52:25 UTC
README
3dbinpacking.com PHP API Wrapper
This library acts as a PHP wrapper around the API available at 3dbinpacking.com.
WARNING: this package is abandoned and will not receive support. It will stay available on GH.
Table Of Content
Requirements
This library uses PHP 5.5+.
To use the 3dbinpacking.com API Wrapper, you have to request an access key from 3dbinpacking.com. For every request, you will have to provide the username & API Key.
Note: this service is NOT free of usage.
Installation
It is recommended that you install the library through composer. To do so, run the Composer command to install the latest stable version of the API wrapper:
composer require stefandoorn/3dbinpacking-php-api
Example
// Build packing request
$request = new \BinPacking3d\Entity\Request();
$bin = new \BinPacking3d\Entity\Bin();
$bin->setWidth(100);
$bin->setHeight(120);
$bin->setDepth(130);
$bin->setMaxWeight(10);
$bin->setOuterWidth(110);
$bin->setOuterHeight(130);
$bin->setOuterDepth(140);
$bin->setWeight(0.1);
$bin->setIdentifier('Test');
$bin->setInternalIdentifier(1);
$request->addBin($bin);
// Item
$item = new \BinPacking3d\Entity\Item();
$item->setWidth(50);
$item->setHeight(60);
$item->setDepth(70);
$item->setWeight(5);
$item->setItemIdentifier('Test');
$item->setProduct(['product_id' => 1]);
$request->addItem($item);
// Set extra info
$request->setApiKey('API KEY');
$request->setUsername('USERNAME');
// Perform request and get results
$boxes = $packIntoMany->run();
// Process result, in here we get all the packed boxes including the items per box
foreach ($boxes->yieldBins() as $packedBox) {
// Get weight of box
$weight = $packedBox->getUsedWeight();
// Get dimensions
$height = $packedBox->getOuterHeight();
$width = $packedBox->getOuterWidth();
$depth = $packedBox->getOuterDepth();
// Get identifier
$identifier = $packedBin->getIdentifier();
// Get items in this box
foreach ($packedBox->yieldItems() as $item) {
// Get additional product data supplied (e.g. IDs, SKUs, etc)
$product = $item->getProduct();
// Add to database etc...
}
}
Optional you can add a PSR-3 compatible logger to the Request object:
$log = new \Monolog\Logger('binpacking');
$log->pushHandler(new \Monolog\Handler\StreamHandler('binpacking.log', \Monolog\Logger::DEBUG));
Optional you can add a Cache driver compatible with doctrine/cache, e.g.:
$cacheDriver = new \Doctrine\Common\Cache\RedisCache();
$redis = new Redis;
$redis->connect($redisHost);
$cacheDriver->setRedis($redis);
$packIntoMany->setCache($cacheDriver);
License
3dbinpacking.com API Wrapper is licensed under The MIT License (MIT).