smalot / magento-client
Magento API Client (SOAP v1). Allows wrappers for each call, dependency injections and code completion.
Installs: 109 078
Dependents: 1
Suggesters: 0
Security: 0
Stars: 78
Watchers: 13
Forks: 20
Open Issues: 6
Requires
- php: >=5.3.0
Requires (Dev)
- atoum/atoum: dev-master
README
This library implements the Magento SOAP v1 (standard) API.
Features:
- allows wrappers
- allows dependencies injections
- allows code completion
- auto-updated via composer packaging (packagist.org)
Note: This library is not related to Magento Company.
Documentation
This API is designed on top of Magento SOAP API V1.
Supported modules are :
- Mage_Catalog
- Mage_CatalogInventory
- Mage_Checkout
- Mage_Customer
- Mage_Directory
- Mage_Sales
- Enterprise_CustomerBalance
- Enterprise_CustomerGiftCard
- Mage_GiftMessage
- Mage_Core
- Store View
Module's names has been standardized to be more clean :
- Catalog
- CatalogInventory
- Cart
- Customer
- Directory
- Order
- CustomerBalance
- GiftCard
- GiftMessage
- Core
- Store
Note : login
and logout
calls are made only if needed.
Installation
Download using composer:
{ "require": { "smalot/magento-client": "*" } }
Now tell composer to download the bundle by running the command:
$ php composer.phar update smalot/magento-client
Composer will install the bundle to your project's vendor/smalot
directory and create
/update
an autoload file.
License
This library is provided under MIT license (since v0.5.0 release). See the complete license :
LICENSE
Implementation
Each module manager
, which heritate from MagentoModuleAbstract
, will generate an action
.
Actions can be either directly executed or added to a queue
.
If it is directly executed, it will generate a single call
, if not, that's a multi call
.
Single Call
Here is a sample code to load tree of categories of the default
website in a single call.
<?php // Include composer's autoloader mecanism include 'vendor/autoload.php'; // Init config $path = 'http://domainname.tld/shop-folder/'; $apiUser = 'username'; $apiKey = 'xxxxxxxxxxxxxxxxxxx'; // Create remote adapter which wrap soapclient $adapter = new \Smalot\Magento\RemoteAdapter($path, $apiUser, $apiKey); // Call any module's class $categoryManager = new \Smalot\Magento\Catalog\Category($adapter); $tree = $categoryManager->getTree()->execute(); var_dump($tree);
Multi Call
Multi call is only available on Magento Soap v1
.
That's why this library is built on top of Magento Soap v1
.
This function allows to group multiple soap calls into only one http request, which can be a very great optimization practice.
It removes network latency
and reduce magento bootstrap processes.
Tipically, it can be used to synchronize a whole product catalog into very few number of calls.
<?php // Include composer's autoloader mecanism include 'vendor/autoload.php'; // Init config $path = 'http://domainname.tld/shop-folder/'; $apiUser = 'username'; $apiKey = 'xxxxxxxxxxxxxxxxxxx'; // Create remote adapter which wrap soapclient $adapter = new \Smalot\Magento\RemoteAdapter($path, $apiUser, $apiKey); // Build the queue for multicall $queue = new \Smalot\Magento\MultiCallQueue($adapter); // Call any module's class $productManager = new \Smalot\Magento\Catalog\Product($adapter); $productManager->getInfo(10)->addToQueue($queue); $productManager->getInfo(11)->addToQueue($queue); $productManager->getInfo(12)->addToQueue($queue); // Request in one multicall information of 3 products (#10, #11, #12) $products = $queue->execute(); var_dump($products);
Callback support for multicall
<?php // Include composer's autoloader mecanism include 'vendor/autoload.php'; // Init config $path = 'http://domainname.tld/shop-folder/'; $apiUser = 'username'; $apiKey = 'xxxxxxxxxxxxxxxxxxx'; // Create remote adapter which wrap soapclient $adapter = new \Smalot\Magento\RemoteAdapter($path, $apiUser, $apiKey); // Build the queue for multicall $queue = new \Smalot\Magento\MultiCallQueue($adapter); // Local catalog adapter $localAdapter = new LocalAdapter(....); // Store categories $categoryManager = new \Smalot\Magento\Catalog\Category($adapter); $categoryManager->getTree()->addToQueue($queue, array($localAdapter, 'updateCategories')); // Store products into local catalog $productManager = new \Smalot\Magento\Catalog\Product($adapter); $productManager->getInfo(10)->addToQueue($queue, array($localAdapter, 'updateProduct')); $productManager->getInfo(11)->addToQueue($queue, array($localAdapter, 'updateProduct')); $productManager->getInfo(12)->addToQueue($queue, array($localAdapter, 'updateProduct')); // Update local catalog $products = $queue->execute();