Obwohl OpenCart viele Funktionen im Kern selbst bietet, befinden Sie sich oft in der Situation, in der Sie eine Drittanbieter-Bibliothek integrieren möchten. OpenCart verfügt über ein Konzept der Bibliothek, das einen allgemeinen Satz von APIs für alltägliche Vorgänge bietet, z. B. die Interaktion mit dem Konfigurationssystem oder Datenbanksystem, den Umgang mit einem E-Mail-System usw. Heute werden wir sehen, wie Sie Ihr System implementieren können eigene benutzerdefinierte Bibliothek in OpenCart.
In diesem Artikel erstellen wir eine benutzerdefinierte Bibliothek, in der Sie CURL-Aufrufe durchführen können. Wir werden versuchen, die Dinge einfach und unkompliziert zu halten, da es wichtig ist, das Konzept selbst zu verstehen - die Implementierung kann je nach Komplexität variieren.
Wir verwenden die neueste Version von OpenCart. Ich gehe außerdem davon aus, dass Sie mit der Modulstruktur von OpenCart vertraut sind.
Was genau ist eine Bibliothek in OpenCart? Einfach ausgedrückt handelt es sich um eine Reihe von Hilfsskripts, die uns die Funktionalität bieten, die üblicherweise im Framework verwendet wird. In OpenCart finden Sie alle Bibliotheken unter System / Bibliothek
Verzeichnis. Zum Beispiel wird eine eingehende Anfrage vom bearbeitet Anfordern Bibliothek, und für die Antwortbehandlung gibt es die Antwort Bibliothek. Ebenso gibt es Bibliotheken für Caching, Kunden, Datenbanken und das Konfigurationssystem, um nur einige zu nennen.
Im Allgemeinen laden Sie die erforderlichen Bibliotheken nach Bedarf in Ihren Controller- / Modellcode. Sie müssen so etwas tun, um eine Bibliothek zu laden:
$ cache = $ this-> load-> library ('cache');
Im obigen Beispiel haben wir den geladen Zwischenspeicher Bibliothek. Ab jetzt können Sie also die $ cache
Objekt, um die in dieser Bibliothek definierten Methoden aufzurufen. Wie Sie sehen, ist es wirklich eine flexible Möglichkeit, die Objekte nach Bedarf zu laden.
Heute implementieren wir eine curl-Bibliothek, sodass Sie damit CURL-Aufrufe unter Verwendung dieser Bibliothek durchführen können. Es ist hilfreich, die Code-Duplizierung in den Controllern zu vermeiden, da Sie für jede CURL-Anforderung das Objekt instanziieren und die allgemeinen Header einrichten müssen. Wir packen es in die allgemeine Bibliothek ein, so dass es wiederverwendbar ist und Code-Duplizierungen in den Modulen vermieden werden.
Bevor wir mit der Implementierung der benutzerdefinierten Bibliothek beginnen, werfen wir einen Blick auf eine der Kernbibliotheken von OpenCart.
Da wir bereits im vorigen Abschnitt die Cache-Bibliothek besprochen haben, wollen wir den Code dieser Bibliothek untersuchen. Mach weiter und öffne dich system / library / cache.php
in Ihrem bevorzugten Texteditor.
cache = neue $ class ($ expire); else exit ('Fehler: Cache-Treiber konnte nicht geladen werden'. $ Treiber. 'Cache!'); öffentliche Funktion get ($ key) return $ this-> cache-> get ($ key); public function set ($ key, $ value) return $ this-> cache-> set ($ key, $ value); public function delete ($ key) return $ this-> cache-> delete ($ key);
Ziemlich leichtes Zeug, nicht wahr? Es bietet eine einfache klassenbasierte Implementierung mit den erforderlichen Methoden. Obwohl es sich um ein sehr einfaches Beispiel handelt, kann es für Ihren Anwendungsfall ziemlich komplex sein! Lernen Sie ein paar weitere Bibliotheken kennen, um sich mit dem Konzept vertraut zu machen.
Jetzt wissen Sie über die Kernbibliotheken Bescheid, lassen Sie uns unsere eigene erstellen! Ein ... kreieren System / Bibliothek / curl.php
mit folgenden Inhalten.
get ('db'); * $ registry-> get ('cache'); * $ registry-> get ('session'); * $ registry-> get ('config'); * und mehr… * / protected function __construct ($ registry) // lade die "Log" -Bibliothek aus der "Registry" $ this-> logger = $ registry-> get ('log'); / ** * @param string $ url * @param array $ params Schlüsselwertpaar * / public function do_request ($ url, $ params = array ()) // Die Anforderung $ this-> logger-> protokollieren write ("Initiierte CURL-Anfrage für: $ url")); // init curl object $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // bereite ein Post-Array vor, falls verfügbar $ params_string = "; if (is_array ($ params) && count ($ params)) foreach ($ params als $ key => $ value) $ params_string. = $ key. '=' . $ value. '&'; rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, count ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string); // result = curl_exec ($ ch); // Verbindung schließen curl_close ($ ch); $ result zurückgeben;
Wir haben ein definiert Curl
Klasse mit einer Handvoll Methoden.
Beginnen mit dem bekomme Instanz
Methode ermöglicht es uns, ein Objekt der Klasse selbst zu erstellen. Außerdem wird sichergestellt, dass zu jeder Zeit eine einzige Instanz der Klasse vorhanden ist.
Als Nächstes haben wir den Konstruktor mit der definiert $ register
Streit. Natürlich brauchen Sie kein Argument, aber ich habe es zum Beispiel verwendet, um zu zeigen, wie Sie andere Bibliotheken mit Hilfe von $ register
Objekt. In unserem Beispiel laden wir die Log
Bibliothek und Zuordnung zu der Logger
Eigentum. Wir werden diese Bibliothek verwenden, um die Curl-Anforderungen zu Debugging-Zwecken zu protokollieren!
Endlich gibt es eine do_request
Methode, die alle schweren Aufgaben für uns erledigt! Es gibt zwei Argumente: $ url
enthält die URL, an die die Curl-Anfrage gestellt wird, und $ params
enthält ein optionales Array von Parametern für den Fall, dass wir irgendwelche Daten POST machen müssen. Der folgende Code ist ziemlich einfach zu verstehen: Er ruft einen Curl-Aufruf auf und gibt die Antwort zurück!
Wir sind fast fertig mit der Einrichtung unserer benutzerdefinierten Bibliothek. Wir werden es im nächsten Abschnitt sehen.
Meistens rufen Sie Bibliotheken vom Controller selbst auf. Sehen wir uns also an, wie Sie unsere Bibliothek vom Controller aus laden und verwenden.
// load curl library $ this-> load-> library ('curl'); $ obj_curl = Curl :: get_instance ($ this-> Registrierung); $ result = $ obj_curl-> do_request ($ url); $ result = $ obj_curl-> do_request ($ url, $ params); // falls $ params benötigt werden
Das $ this-> load-> library ('curl')
Diese Anweisung lädt unsere benutzerdefinierte Bibliothek. In der nächsten Aussage haben wir die bekomme Instanz
Methode und bestanden die $ register
Objekt als Konstruktorargument. Schließlich haben wir die verwendet do_request
Methode, um die Curl-Aufrufe durchzuführen!
Wie Sie sehen, ist es ziemlich einfach, eigene Bibliotheken in OpenCart zu erstellen! In ähnlicher Weise könnten Sie eine beliebige Bibliothek von Drittanbietern in OpenCart integrieren Bibliothek Formatieren und bei Bedarf im gesamten Framework verwenden.
Heute haben wir das Konzept einer Bibliothek in OpenCart diskutiert.
Wenn Sie nach zusätzlichen Bibliotheken suchen, die Sie verwenden oder erkunden können, vergessen Sie nicht zu sehen, was wir auf unserem Marktplatz zur Verfügung haben.
Wir haben die Kernbibliotheken erforscht und eine eigene Bibliothek für curl erstellt. Ich hoffe es hat dir gefallen! Teilen Sie Ihre Gedanken und Fragen mit dem folgenden Feed mit!