Stars: 125
Forks: 47
Pull Requests: 37
Issues: 79
Watchers: 15
Last Updated: 2023-07-31 09:27:15
:rocket: Shopify API Client for PHP
License: MIT License
Languages: PHP
🚀 PHP SDK for the Shopify API
Install via composer
$ composer require slince/shopify-api-php
You first need to initialize the client. For that you need your Shop Name and AccessToken
require __DIR__ . '/vendor/autoload.php';
$credential = new Slince\Shopify\PublicAppCredential('Access Token');
// Or Private App
$credential = new Slince\Shopify\PrivateAppCredential('API KEY', 'PASSWORD', 'SHARED SECRET');
$client = new Slince\Shopify\Client('your-store.myshopify.com', $credential, [
'meta_cache_dir' => './tmp' // Metadata cache dir, required
]);
Middleware augments the functionality of handlers by invoking them in the process of generating responses. Middleware is implemented as a higher order function that takes the following form.
$middleware = function(\Psr\Http\Message\ServerRequestInterface $request, callable $next){
$response = $next($request);
$this->logger->log($request, $response);
return $response;
};
$client->getMiddlewares()->push($middleware);
Built-in middleware:
The Client throws the following types of exceptions.
$products = $client->getProductManager()->findAll([
// Filter your product
'collection_id' => 841564295
'page' => 2 // deprecated
]);
$pagination = $client->getProductManager()->paginate([
// filter your product
'limit' => 3,
'created_at_min' => '2015-04-25T16:15:47-04:00'
]);
// $pagination is instance of `Slince\Shopify\Common\CursorBasedPagination`
$currentProducts = $pagination->current(); //current page
while ($pagination->hasNext()) {
$nextProducts = $pagination->next();
}
# to persist across requests you can use next_page_info and previous_page_info
$nextPageInfo = $pagination->getNextPageInfo();
$prevPageInfo = $pagination->getPrevPageInfo();
$products = $pagination->current($nextPageInfo);
$product = $client->getProductManager()->find(12800);
// Update the given product
$product = $client->getProductManager()->update(12800, [
"title" => "Burton Custom Freestyle 151",
"body_html" => "<strong>Good snowboard!<\/strong>",
"vendor"=> "Burton",
"product_type" => "Snowboard",
]);
$product = $client->getProductManager()->create([
"title" => "Burton Custom Freestyle 151",
"body_html" => "<strong>Good snowboard!<\/strong>",
"vendor"=> "Burton",
"product_type" => "Snowboard",
]);
$client->getProductManager()->remove(12800);
The product is an instance of Slince\Shopify\Manager\Product\Product
; You can access properties like following:
echo $product->getTitle();
echo $product->getCreatedAt(); // DateTime Object
//...
print_r($product->getVariants());
print_r($product->getImages());
Available managers:
You can access the manager like $client->getProductManager()
, $client->getOrderManager()
.
If you don't like to use managers, you can also manipulate data like this:
The returned value is just an array;
$products = $client->get('products', [
// Filter your products
]);
$product = $client->get('products/12800');
$product = $client->post('products', [
"product" => [
"title" => "Burton Custom Freestyle 151",
"body_html" => "<strong>Good snowboard!<\/strong>",
"vendor"=> "Burton",
"product_type" => "Snowboard",
"images" => [
[
"attachment" => "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAw==\n"
]
]
]
]);
$product = $client->put('products/12800', [
"product" => [
"title" => "Burton Custom Freestyle 151",
"body_html" => "<strong>Good snowboard!<\/strong>",
"vendor"=> "Burton",
"product_type" => "Snowboard",
"images" => [
[
"attachment" => "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAw==\n"
]
]
]
]);
$client->delete('products/12800');
The MIT license. See MIT