Skip to content

slince/shopify-api-php

Repository files navigation

🚀 PHP SDK for the Shopify API

Software License Build Status Coverage Status Latest Stable Version Scrutinizer Total Downloads

Installation

Install via composer

$ composer require slince/shopify-api-php

Quick Start

Initialize the client

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

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:

Exception

The Client throws the following types of exceptions.

Use Manager to manipulate your data;

  • Lists products
$products = $client->getProductManager()->findAll([ // Filter your product 'collection_id' => 841564295 'page' => 2 // deprecated ]);
  • Lists products by pagination
$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);
  • Get the specified product
$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", ]);
  • Creates a new product
$product = $client->getProductManager()->create([ "title" => "Burton Custom Freestyle 151", "body_html" => "<strong>Good snowboard!<\/strong>", "vendor"=> "Burton", "product_type" => "Snowboard", ]);
  • Removes the product by its id
$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().

Basic CURD

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');

LICENSE

The MIT license. See MIT

About

🚀 Shopify API Client for PHP

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages