Erstellen Sie eine Befehlzeile für Ihren Shopify Store

Erstellen Sie eine Befehlzeile für Ihren Shopify Store

Bei Eastside Co verwenden wir PHP, um unsere Back-End-Integrationen unter Verwendung des Laravel-Frameworks zu entwickeln. Zusammen mit Vue.js erstellen wir leistungsstarke Apps. Aber was ist mit einer Befehlszeile - wofür würden wir sie verwenden und was kann sie tun?

Written by Jim Seconde

2 min read

Die meisten Backend-Entwickler kennen sich mit interaktiven Modi aus. das ist sicher kein geheimnis.

jimseconde@jim-amd-u18$: php -a

gibt Ihnen eine aktive PHP-Shell. Ein aktiver Interpreter ist zwar nützlich, hat jedoch eine wesentliche Einschränkung: Er ist die Standardbibliothek der Funktionen einer Sprache, nicht eines Frameworks oder des Codes Ihrer gesamten Anwendung. Sie müssen Dateien aus Ihrer gesamten Anwendung importieren. Wenn Sie beispielsweise die Shopify-API in der Befehlszeile verwenden möchten, müssen Sie zeilenweise durch alle möglichen Rahmen springen, um sie zum Laufen zu bringen. Wie können wir eine Befehlszeile erhalten, die beim Öffnen in den gesamten Code Ihrer App geladen wird?

Von der interaktiven PHP-Shell zu PsySh

PsySh macht genau das. Sie können es laden, indem Sie es php artisan tinkerin Ihre Befehlszeile eingeben . Beim Laden wird die Autoloading-Funktion von Composer verwendet, um alle Klassen für die Verwendung durch Ihre Shell in den Speicher zu stellen. Es ist auch Laravels Einstiegspunkt in die App, einschließlich aller Bootstrap-Funktionen, gefeuert - so sind Funktionen wie der Service Container und Config verfügbar:

jimseconde@jim-amd-u18$: php artisan tinker

config('app.my_awesome_variable'); $myPusherService = app()->make('PusherService'); $myPusherService->pushToQueue(['send me']);

Verwenden der Shopify-API-Bibliothek in einer Shell

In früheren Blogeinträgen habe ich beschrieben, wie Sie mit Composer einen REST-API- Wrapper erhalten Der Wrapper wird verwendet, um alles abzurufen und zu pushen, was Ihre App in ihrer Geschäftslogik benötigt, um mit einem Shopify-Geschäft zu interagieren (in diesem Fall). Es ist jedoch in den Code Ihrer App eingebettet, sodass eine manuelle Abfrage der API mit Postman oder Insomnia besser für schnelle Abfragen geeignet ist. Mit PsySh ist die API jetzt -erreichbar-. Noch besser ist, dass Sie den API-Wrapper möglicherweise um maßgeschneiderte Funktionen erweitert haben - jetzt ist dies auch verfügbar. Beispielsweise:

jimseconde@jim-amd-u18$: php artisan tinker

$api = new \EastsideCo\Shopify(); $shopifyProduct = $api->get(‘admin/products/324235.json’)->products; $localProduct = new \App\Product::create($shopifyProduct); $localProduct->save();

Sie werden feststellen, dass PsySh Ihnen auch interaktives Feedback gibt. Wenn Sie beispielsweise die Eloquent- save()Funktion aufrufen , wird, solange die Entität die Validierung besteht, zurückgegeben und unten gedruckt. Im Fall einer API-Antwort oder des Ergebnisses einer Datenbankabfrage wird ein json-Array der Antwort zurückgegeben und gedruckt, selbst wenn es auf eine Variable festgelegt wurde.

Ihre API-Klasseninstanz wird genauso generiert, wie Sie es bei der Ausführung der gesamten Anwendung zur Laufzeit getan hätten (da alles in PsySh geladen wurde, ist dies technisch genau das, was passiert ist). Alle benutzerdefinierten Methoden, die Sie codiert haben, sind jetzt verfügbar. Beispiel:

$blogPayload = [‘09012938’,’My new blog post’]; \App\API::createBlogPost($blogPayload); true $api->fetchImagesByVariantId(‘90812309’)

Verwenden des Speichertreibers in unserer Befehlszeile

Hier ist ein weiteres Beispiel, wo PsySh wirklich mächtig sein kann. Jede Laravel-Klasse, die mit dem Framework geliefert wird, ist jetzt verfügbar. Nehmen wir also das Dateispeichersystem, das auf der leistungsstarken Flysystem PHP-Bibliothek aufbaut. Stellen wir uns vor, Sie müssen eine bestimmte SQL-Abfrage für die Datenanalyse extrahieren.

$dataQuery = \DB::(SELECT a.id, a.title, b.title, b.price, b.sku from products a INNER JOIN variants b on a.id = b.product_id)->get(); // $dataQuery is a select query returned as a .json // dump out the data to the storage path \Storage::disk(‘local’)->put(‘datadump.json’, $dataQuery);

Auf Ihrem Server wird jetzt das Abfrageergebnis json geschrieben /storage/app (wenn Sie noch die Standardeinstellungen verwenden, wird es andernfalls in den für den lokalen Treiber konfigurierten Pfad geschrieben).

Wir haben hier nur den lokalen Treiber verwendet, aber wenn Sie möchten, können Sie auch jeden anderen Treiber verwenden - wie z. B. den AWS S3. Möchten Sie die gleiche Nutzlast in einen S3-Eimer senden? Sicher!

Ich habe festgestellt, dass die Leistung einer interaktiven Shell wie dieser für unsere täglichen Shopify-Vorgänge von unschätzbarem Wert ist. Weitere Informationen zu PsySh und Tinker finden Sie in den Dokumenten und Repos:

https://psysh.org/

https://github.com/bobthecow/psysh

https://github.com/laravel/tinker

Viel Spaß beim Testen!

Wer wir sind

Wir sind einer der weltweit zuverlässigsten und erfahrensten Shopify Plus Partner. Als Full-Service-Agentur mit über 50 talentierten Mitarbeitern haben wir hunderten von ehrgeizigen Marken geholfen, ihre Ziele zu übertreffen.

Über Eastside Co

Was wir machen

Eastside Co ist führend bei UX-fokussiertem Shopify-Webdesign, ergebnisorientierten Marketingstrategien und erstklassigen Shopify-Anwendungen und -Software. Wir helfen Online-Unternehmen, sich vom Alltäglichen zu lösen und E-Commerce-Erfolg zu erzielen.

Lerne über unsere Dienstleistungen/ Services
Über 500 Shopify E-Commerce Webseiten.

Lass uns zusammenarbeiten, um dein E-commerce Shop aufzubauen.

Kontaktiere uns