Även om OpenCart har många funktioner i själva kärnan, befinner du dig ofta i den situation där du vill integrera ett tredjepartsbibliotek med det. OpenCart har ett koncept för biblioteket som tillhandahåller en gemensam uppsättning API för dagliga operationer som interagerar med konfigurationssystemet eller databasystemet, hanterar ett e-postsystem etc. Idag ser vi hur du kan implementera din eget anpassat bibliotek i OpenCart.
I den här artikeln kommer vi att skapa ett anpassat bibliotek som låter dig göra CURL-samtal. Vi ska försöka hålla sakerna enkla och raka, eftersom det viktiga att förstå är konceptet själv-genomförandet kan variera beroende på komplexiteten.
Vi använder den senaste versionen av OpenCart. Jag antar också att du är medveten om modulstrukturen i OpenCart.
Så, vad exakt är ett bibliotek i OpenCart? Enkelt uttryckt är det en uppsättning verktygsskript som ger oss den funktion som vanligtvis används i ramverket. I OpenCart hittar du alla bibliotek under system / bibliotek
katalogen. Till exempel hanteras en inkommande förfrågan av Begäran bibliotek, och för svarhantering finns det Svar bibliotek. På samma sätt finns bibliotek för caching, kund, databas och konfigurationssystem, för att bara nämna några.
I allmänhet laddar du de nödvändiga biblioteken i din kontroller / modellkod efter behov. Du måste göra något för att ladda biblioteket:
$ cache = $ this-> load-> library ('cache');
I ovanstående exempel har vi laddat in cache bibliotek. Så från och med nu kan du använda $ cache
motsätta sig att kalla de metoder som definieras i det biblioteket. Som du kan se är det verkligen ett flexibelt sätt att ladda objekten efter behov.
Idag genomför vi ett kretsbibliotek så att du kan använda det för att göra CURL-samtal med det biblioteket. Det kommer att vara användbart att undvika koddubbling i kontrollerna, liksom för varje CURL-förfrågan måste du ordna objektet och ställa in de vanliga rubrikerna. Vi lägger upp det i det gemensamma biblioteket så att det kan återanvändas och undviker koddubbling över modulerna.
Innan vi fortsätter och startar vår anpassade biblioteksimplementering, låt oss snabbt titta på en av kärnbiblioteken i OpenCart.
Som vi redan har diskuterat cachebiblioteket i föregående avsnitt, låt oss utforska koden i det biblioteket. Gå vidare och öppna system / bibliotek / cache.php
i din favorit textredigerare.
cache = ny $ class ($ expire); annars exit ('Fel: Kunde inte ladda cacherdrivrutin'. $ drivrutin. '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) returnera $ this-> cache-> delete ($ key);
Ganska lätta saker, eller hur? Det ger en enkel klassbaserad implementering med de nödvändiga metoderna. Även om det är ett mycket enkelt exempel kan det vara ganska komplext för ditt användarfall! Gå vidare och utforska ett par fler bibliotek för att få dig att bekanta dig med konceptet.
Så nu är du medveten om kärnbiblioteken, låt oss skapa vår egen! Skapa en system / bibliotek / curl.php
med följande innehåll.
få ( 'db'); * $ registry-> get ('cache'); * $ registry-> get ('session'); * $ registry-> get ('config'); * och mer ... * / skyddad funktion __construct ($ registry) // ladda "Log" -biblioteket från "Registry" $ this-> logger = $ registry-> get ('log'); / ** * @paramsträng $ url Url * @param array $ params Nyckelvärdespar * / allmän funktion do_request ($ url, $ params = array ()) // logga in förfrågan $ this-> logger-> skriv ("Initierad CURL-begäran för: $ url"); // init curl objekt $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // förbereda postmatris om tillgänglig $ params_string = "; om (is_array ($ params) && count ($ params)) foreach ($ params som $ key => $ värde) $ params_string. = $ key. '=' $ $, $ $, $ $, $ $, $ $ result = curl_exec ($ ch); // nära anslutningen curl_close ($ ch); returnera $ resultat;
Vi har definierat a Ringla
klass med en handfull metoder.
Börjar med get_instance
metod, tillåter det oss att skapa ett objekt för själva klassen. Det kommer också att se till att vi vid varje tillfälle har en enda förekomst av klassen.
Därefter har vi definierat konstruktören med $ register
argument. Naturligtvis behöver du inget argument, men till exempel har jag använt det för att visa hur man laddar andra bibliotek med hjälp av $ register
objekt. I vårt exempel laddar vi in Logga
bibliotek och tilldela det till logger
fast egendom. Vi använder det här biblioteket för att logga in curl-förfrågningarna för felsökningsändamål!
Slutligen finns det en do_request
metod som gör allt tungt för oss! Det finns två argument: $ url
håller den URL som vi ska göra curl-förfrågan till, och $ params
innehåller ett valfritt antal parametrar om vi behöver posta några data. Koden som följer är ganska lätt att förstå: det gör ett kretssamtal och returnerar svaret!
Så vi har nästan slutat med vårt anpassade bibliotek. Vi ser det i åtgärd i nästa avsnitt.
För det mesta kommer du att ringa bibliotek från själva kontrollenheten. Så, låt oss se hur du laddar och använder vårt bibliotek från regulatorn.
// ladda curl biblioteket $ this-> load-> library ('curl'); $ obj_curl = Curl :: get_instance ($ this-> registry); $ result = $ obj_curl-> do_request ($ url); $ result = $ obj_curl-> do_request ($ url, $ params); // om $ params behövs
De $ This-> last> bibliotek (curl)
uttalandet laddar vårt anpassade bibliotek. I nästa uttalande har vi kallat get_instance
metod och passerade $ register
objekt som ett konstruktörargument. Slutligen har vi använt do_request
metod för att ringa kretsarna!
Så som du kan se är det ganska enkelt att skapa egna bibliotek i OpenCart! På samma sätt kan du integrera något tredje part bibliotek i OpenCart bibliotek formatera och använda det genom hela ramen efter behov.
Idag har vi diskuterat begreppet bibliotek i OpenCart.
Om du letar efter ytterligare bibliotek att använda eller utforska, glöm inte att se vad vi har tillgängliga på vår marknadsplats.
Vi har undersökt kärnbiblioteken och skapat vårt eget bibliotek för curl. Jag hoppas att du har haft det! Dela dina tankar och frågor med hjälp av flödet nedan!