Een aangepaste bibliotheek maken in OpenCart

Hoewel OpenCart veel functies in de kern zelf biedt, bevindt u zich vaak in de situatie waarin u een externe bibliotheek ermee wilt integreren. OpenCart heeft een concept van de bibliotheek dat een gemeenschappelijke set API's biedt voor dagelijkse bewerkingen zoals interactie met het configuratiesysteem of databasesysteem, het omgaan met een e-mailsysteem, enz. Vandaag zullen we zien hoe u uw eigen aangepaste bibliotheek in OpenCart.

In dit artikel gaan we een aangepaste bibliotheek maken waarmee u CURL-oproepen kunt maken. We zullen proberen de dingen eenvoudig en duidelijk te houden, omdat het belangrijkste ding om te begrijpen het concept zelf is - de implementatie kan variëren op basis van de complexiteit.

We gebruiken de nieuwste versie van OpenCart. Ik neem ook aan dat je je bewust bent van de modulestructuur van OpenCart.

Wat is een bibliotheek in OpenCart?

Wat is nu precies een bibliotheek in OpenCart? In eenvoudige bewoordingen is het een reeks utility-scripts die ons de functionaliteit bieden die gewoonlijk in het kader wordt gebruikt. In OpenCart vindt u alle bibliotheken onder de systeem / library directory. Een inkomende aanvraag wordt bijvoorbeeld afgehandeld door de Verzoek bibliotheek, en voor responsafhandeling is er de antwoord bibliotheek. Evenzo zijn er bibliotheken voor caching, klant, database en het configuratiesysteem, om maar een paar te noemen.

Over het algemeen laadt u de vereiste bibliotheken in uw controller / modelcode als dat nodig is. U moet zoiets doen om elke bibliotheek te laden:

$ cache = $ this-> load-> library ('cache');

In het bovenstaande voorbeeld hebben we het cache bibliotheek. Dus vanaf nu kun je de gebruiken $ cache object om de methoden te bellen die in die bibliotheek zijn gedefinieerd. Zoals u kunt zien, is het echt een flexibele manier om de objecten naar behoefte te laden.

Vandaag zullen we een curl-bibliotheek implementeren, zodat u deze kunt gebruiken om CURL-oproepen te maken met die bibliotheek. Het is handig om de codeduplicatie in de controllers te vermijden, want voor elke CURL-aanvraag moet u het object instantiëren en de algemene headers instellen. We sluiten het af in de gemeenschappelijke bibliotheek, zodat het herbruikbaar is en codeduplicatie in de modules wordt vermeden.

Voordat we doorgaan en onze aangepaste bibliotheekimplementatie beginnen, laten we een snelle blik werpen op een van de kernbibliotheken van OpenCart.

Verken de kernbibliotheekcode

Omdat we de cache-bibliotheek in de vorige sectie al hebben besproken, laten we de code van die bibliotheek verkennen. Ga je gang en open System / Library / cache.php in je favoriete teksteditor.

cache = nieuwe $ class ($ expire);  else exit ('Fout: kan cachestuurprogramma niet laden'. $ driver. 'cache!');  public function 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); 

Best gemakkelijk, toch? Het biedt een eenvoudige op klassen gebaseerde implementatie met de vereiste methoden. Hoewel het een heel eenvoudig voorbeeld is, kan het behoorlijk ingewikkeld zijn voor uw gebruik! Ga je gang en verken een paar andere bibliotheken om jezelf vertrouwd te maken met het concept.

Maak een aangepaste bibliotheek: Curl

Dus nu, je bent je bewust van de kernbibliotheken, laten we er zelf een maken! Maak een System / Library / curl.php met de volgende inhoud.

te krijgen ( 'db'); * $ registry-> get ('cache'); * $ registry-> get ('session'); * $ registry-> get ('config'); * en meer ... * / beschermde functie __construct ($ register) // laad de "Log" bibliotheek van "Register" $ this-> logger = $ register-> get ('log');  / ** * @param string $ url URL * @param array $ params Sleutel / waarde paar * / publieke functie do_request ($ url, $ params = array ()) // registreer het verzoek $ this-> logger-> write ("Geïnitieerde CURL-aanvraag voor: $ url"); // init curl-object $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // prepare post array indien beschikbaar $ 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); // voer verzoek $ uit result = curl_exec ($ ch); // close-verbinding curl_close ($ ch); return $ result;

We hebben een gedefinieerd Krul les met een handvol methoden.

Beginnend met de get_instance methode, het stelt ons in staat om een ​​object van de klasse zelf te maken. Het zorgt er ook voor dat we op elk willekeurig moment een instantie van de klas hebben.

Vervolgens hebben we de constructor gedefinieerd met de $ register argument. Natuurlijk heb je geen redenering nodig, maar bijvoorbeeld, ik heb het gebruikt om te demonstreren hoe andere bibliotheken te laden met behulp van de $ register voorwerp. In ons voorbeeld laden we de Log bibliotheek en toewijzen aan de houthakker eigendom. We gebruiken deze bibliotheek om de curl-verzoeken voor foutopsporingsdoeleinden te registreren!

Eindelijk is er een do_request methode die al het zware werk voor ons doet! Er zijn twee argumenten: $ url bevat de URL waarnaar we het krulverzoek zullen doen, en $ params bevat een optionele reeks parameters voor het geval we POST-gegevens POSTEN. De volgende code is redelijk eenvoudig te begrijpen: hij maakt een curl-oproep en retourneert de reactie!

Dus we zijn bijna klaar met onze aangepaste bibliotheek. We zullen het in de volgende sectie in actie zien.

Hoe onze eigen bibliotheek te gebruiken

Meestal bel je bibliotheken van de controller zelf. Laten we dus kijken hoe we onze bibliotheek kunnen laden en gebruiken vanaf de controller.

// load curl library $ this-> load-> library ('curl'); $ obj_curl = Krul: get_instance ($ this-> register); $ result = $ obj_curl-> do_request ($ url); $ result = $ obj_curl-> do_request ($ url, $ params); // in het geval van $ params nodig

De $ This-> load-> library ( 'krul') statement laadt onze aangepaste bibliotheek. In de volgende verklaring hebben we de get_instance methode en gaf de $ register object als constructorargument. Ten slotte hebben we de do_request methode om de curl-oproepen te maken!

Dus, zoals u kunt zien, is het vrij eenvoudig om uw eigen bibliotheken in OpenCart te maken! Evenzo zou u een bibliotheek van derden in OpenCart kunnen integreren bibliotheek formatteren en gebruiken in het hele framework als dat nodig is.

Conclusie

Vandaag hebben we het concept van een bibliotheek in OpenCart besproken. 

Als u op zoek bent naar aanvullende bibliotheken die u kunt gebruiken of verkennen, vergeet dan niet te zien wat we beschikbaar hebben op onze marktplaats.

We hebben de kernbibliotheken verkend en onze eigen bibliotheek voor curl gemaakt. Ik hoop dat je ervan hebt genoten! Deel uw mening en vragen met behulp van de onderstaande feed!