Selv om OpenCart har mange funksjoner i selve kjernen, vil du ofte finne deg selv i situasjonen der du vil integrere et tredjepartsbibliotek med det. OpenCart har et konsept av biblioteket som gir et felles sett med APIer for den daglige operasjonen som interagerer med konfigurasjonssystemet eller databasesystemet, håndterer et e-postsystem, etc. I dag ser vi hvordan du kan implementere din eget tilpasset bibliotek i OpenCart.
I denne artikkelen skal vi opprette et tilpasset bibliotek som lar deg lage CURL-samtaler. Vi vil prøve å holde ting enkelt og greit, da det viktigste er å forstå konseptet selv - implementeringen kan variere ut fra kompleksiteten.
Vi bruker den nyeste versjonen av OpenCart. Jeg antar også at du er klar over modulstrukturen i OpenCart.
Så, hva er et bibliotek i OpenCart? Enkelt sagt er det et sett med verktøyskript som gir oss funksjonaliteten som brukes ofte i rammen. I OpenCart finner du alle bibliotekene under system / bibliotek
katalogen. For eksempel håndteres en innkommende forespørsel av Be om bibliotek, og for responshåndtering er det Respons bibliotek. Tilsvarende er det biblioteker for caching, kunde, database og konfigurasjonssystemet, for bare å nevne noen.
Vanligvis vil du laste inn de nødvendige bibliotekene i din kontroller / modellkode etter behov. Du må gjøre noe slikt for å laste inn et hvilket som helst bibliotek:
$ cache = $ this-> load-> library ('cache');
I eksempelet ovenfor har vi lastet inn cache bibliotek. Så fra nå av vil du kunne bruke $ cache
motsette seg å ringe til metodene som er definert i det biblioteket. Som du kan se, er det virkelig en fleksibel måte å laste objekter på etter behov.
I dag implementerer vi et krøllebibliotek slik at du kan bruke det til å lage CURL-samtaler ved hjelp av det biblioteket. Det vil være nyttig å unngå koden duplisering i kontrollerne, som for hver CURL-forespørsel må du instantiere objektet og sette opp de vanlige overskriftene. Vi vil pakke det opp i det vanlige biblioteket slik at det kan gjenbrukes og unngår kod duplisering på tvers av modulene.
Før vi går videre og starter vår tilpassede biblioteksimplementering, la oss raskt se på en av kjernebibliotekene i OpenCart.
Som vi allerede har diskutert hurtigbufferbiblioteket i forrige seksjon, la oss utforske koden til det aktuelle biblioteket. Gå videre og åpne system / bibliotek / cache.php
i din favoritt tekstredigerer.
cache = ny $ klasse ($ utløper); ellers exit ('Feil: Kunne ikke laste hurtigbufferdriveren'. $ driver. 'cache!'); offentlig funksjon få ($ key) return $ this-> cache-> get ($ key); offentlige funksjonssett ($ key, $ value) return $ this-> cache-> sett ($ key, $ value); offentlig funksjon slette ($ key) return $ this-> cache-> delete ($ key);
Ganske enkle ting, ikke sant? Det gir en enkel klassebasert implementering med de nødvendige metodene. Selv om det er et veldig enkelt eksempel, kan det være ganske komplisert for din brukstilstand! Gå videre og utforsk et par flere biblioteker for å bli kjent med konseptet.
Så nå, du er klar over kjernebibliotekene, la oss lage vår egen! Lage en system / bibliotek / curl.php
med følgende innhold.
få ( 'db'); * $ registry-> get ('cache'); * $ register-> få ('økt'); * $ register-> få ('config'); * og mer ... * / beskyttet funksjon __construct ($ register) // laste "Log" -biblioteket fra "Register" $ this-> logger = $ registry-> get ('log'); / ** * @param streng $ url Url * @param array $ params Nøkkelverdier par * / offentlig funksjon do_request ($ url, $ params = array ()) // logg forespørselen $ this-> logger-> skriv ("Initiated CURL request for: $ url"); // init curl objekt $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // forberede postarray hvis tilgjengelig $ params_string = "; hvis (is_array ($ params) && count ($ params)) foreach ($ params som $ key => $ verdi) $ params_string. = $ key. '=' . $ verdi. '&'; rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, telle ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string); // utfør forespørsel $ result = curl_exec ($ ch); // lukk forbindelsen curl_close ($ ch); return $ resultat;
Vi har definert a Curl
klasse med en håndfull metoder.
Starter med get_instance
Metode, det tillater oss å skape et objekt av klassen selv. Det vil også sørge for at vi til enhver tid har en enkelt forekomst av klassen.
Deretter har vi definert konstruktøren med $ registret
argument. Selvfølgelig trenger du ikke noe argument, men for eksempel har jeg brukt det til å demonstrere hvordan du laster inn andre biblioteker ved hjelp av $ registret
gjenstand. I vårt eksempel laster vi inn Logg
bibliotek og tilordne det til logger
eiendom. Vi bruker dette biblioteket til å logge krølleforespørsler for feilsøkingsformål!
Til slutt er det a do_request
metode som gjør alt tungt løft for oss! Det er to argumenter: $ url
holder nettadressen som vi vil gjøre krølleforespørselen til, og $ params
har et valgfritt utvalg av parametre hvis vi trenger å legge til noen data. Koden som følger med er ganske grei å forstå: det gjør en krølleanrop og returnerer svaret!
Så vi har nesten fullført med vårt tilpassede bibliotekssett. Vi ser det i aksjon i neste avsnitt.
Mesteparten av tiden vil du ende opp med å ringe bibliotek fra selve kontrolleren. Så, la oss se hvordan du laster og bruker biblioteket vårt fra kontrolleren.
// laste krøllebiblioteket $ this-> load-> library ('curl'); $ obj_curl = Curl :: get_instance ($ this-> register); $ result = $ obj_curl-> do_request ($ url); $ result = $ obj_curl-> do_request ($ url, $ params); // i tilfelle $ params trengs
De $ Dette-> last> bibliotek ( 'curl')
erklæring vil laste vårt tilpassede bibliotek. I den neste setningen har vi kalt get_instance
metode og passerte $ registret
objekt som en konstruktør argument. Til slutt har vi brukt do_request
metode for å gjøre krøllet samtaler!
Så, som du kan se, er det ganske enkelt å lage dine egne biblioteker i OpenCart! På samme måte kan du integrere noe tredjepartsbibliotek i OpenCart bibliotek format og bruk det gjennom rammen etter behov.
I dag har vi diskutert begrepet bibliotek i OpenCart.
Hvis du leter etter flere biblioteker til bruk eller å utforske, ikke glem å se hva vi har tilgjengelig i vår markedsplass.
Vi har utforsket kjernebibliotekene og laget vårt eget bibliotek for krøll. Jeg håper du har hatt det! Del dine tanker og spørsmål ved å bruke feedet under!