Sebbene OpenCart offra molte funzionalità nel core stesso, ti troverai spesso nella situazione in cui vorresti integrare una libreria di terze parti con esso. OpenCart ha un concetto della libreria che fornisce un insieme comune di API per le operazioni quotidiane come l'interazione con il sistema di configurazione o il sistema di database, la gestione di un sistema di posta elettronica, ecc. Oggi vedremo come implementare il tuo possedere una libreria personalizzata in OpenCart.
In questo articolo, creeremo una libreria personalizzata che ti consentirà di effettuare chiamate CURL. Cercheremo di mantenere le cose semplici e dirette, poiché la cosa importante da capire è il concetto stesso - l'implementazione può variare in base alla complessità.
Useremo l'ultima versione di OpenCart. Presumo anche che tu sia a conoscenza della struttura dei moduli di OpenCart.
Quindi, cos'è esattamente una libreria in OpenCart? In termini semplici, è un insieme di script di utilità che ci fornisce la funzionalità utilizzata comunemente nel framework. In OpenCart, troverai tutte le librerie sotto il System / Library
directory. Ad esempio, una richiesta in arrivo viene gestita dal Richiesta libreria, e per la gestione della risposta c'è il Risposta biblioteca. Allo stesso modo, ci sono librerie per la cache, il cliente, il database e il sistema di configurazione, solo per citarne alcuni.
Generalmente, caricherete le librerie richieste nel vostro controller / codice modello secondo necessità. Hai bisogno di fare qualcosa di simile per caricare qualsiasi libreria:
$ cache = $ this-> load-> library ('cache');
Nell'esempio sopra, abbiamo caricato il file nascondiglio biblioteca. Quindi da ora in poi, sarai in grado di utilizzare il $ di cache
oggetto per chiamare i metodi definiti in quella libreria. Come puoi vedere, è davvero un modo flessibile per caricare gli oggetti secondo necessità.
Oggi implementeremo una libreria di arricciature in modo che tu possa usarla per fare chiamate CURL usando quella libreria. Sarà utile evitare la duplicazione del codice nei controller, poiché per ogni richiesta CURL è necessario creare un'istanza dell'oggetto e impostare le intestazioni comuni. Lo racchiuderemo nella libreria comune in modo che sia riutilizzabile ed eviti la duplicazione del codice tra i moduli.
Prima di andare avanti e iniziare l'implementazione della nostra libreria personalizzata, diamo uno sguardo veloce a una delle librerie principali di OpenCart.
Come, abbiamo già discusso la libreria di cache nella sezione precedente, esploriamo il codice di quella libreria. Vai avanti e apri System / Library / cache.php
nel tuo editor di testo preferito.
cache = new $ class ($ expire); else exit ('Errore: impossibile caricare il driver della cache'. $ driver. 'cache!'); public function get ($ key) return $ this-> cache-> get ($ key); set di funzioni pubbliche ($ key, $ value) return $ this-> cache-> set ($ key, $ value); public function delete ($ key) return $ this-> cache-> delete ($ key);
Roba abbastanza facile, non è vero? Fornisce una semplice implementazione basata su classi con i metodi richiesti. Anche se è un esempio molto semplice, potrebbe essere abbastanza complesso per il tuo caso d'uso! Vai avanti ed esplora un paio di altre librerie per familiarizzare con il concetto.
Quindi ora sei a conoscenza delle librerie di base, creiamo le nostre! Creare un System / Library / curl.php
con i seguenti contenuti.
get ( 'DB'); * $ registry-> get ('cache'); * $ registry-> get ('session'); * $ registry-> get ('config'); * e altro ... * / protected function __construct ($ registry) // carica la libreria "Log" dal "Registro" $ this-> logger = $ registry-> get ('log'); / ** * @param stringa $ url Url * @param array $ params Coppia valore-chiave * / funzione pubblica do_request ($ url, $ params = array ()) // registra la richiesta $ this-> logger-> scrivi ("Richiesta CURL avviata per: $ url"); // init curl object $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // prepara post array se disponibile $ params_string = "; if (is_array ($ params) && count ($ params)) foreach ($ params come $ chiave => $ valore) $ params_string. = $ chiave. '=' . $ value. '&'; rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, count ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string); // esegue la richiesta $ risultato = curl_exec ($ ch); // chiudi connessione curl_close ($ ch); restituisci $ risultato;
Abbiamo definito a Arricciare
classe con una manciata di metodi.
A partire da get_instance
metodo, ci permette di creare un oggetto della classe stessa. Ci assicureremo inoltre che in qualsiasi momento avremo una singola istanza della classe.
Successivamente, abbiamo definito il costruttore con il $ registro
discussione. Naturalmente, non è necessario alcun argomento, ma per scopi di esempio l'ho usato per dimostrare come caricare altre librerie usando il $ registro
oggetto. Nel nostro esempio, stiamo caricando il Login
biblioteca e assegnandola al logger
proprietà. Useremo questa libreria per registrare le richieste di arricciatura a scopo di debug!
Infine, c'è un do_request
metodo che fa tutto il lavoro pesante per noi! Ci sono due argomenti: $ url
contiene l'URL a cui faremo la richiesta di arricciatura, e $ params
contiene una serie opzionale di parametri nel caso in cui sia necessario POST qualsiasi dato. Il codice che segue è abbastanza semplice da capire: fa una chiamata al ricciolo e restituisce la risposta!
Quindi abbiamo quasi finito con la nostra libreria personalizzata. Lo vedremo in azione nella prossima sezione.
Il più delle volte, finirai per chiamare le librerie dal controller stesso. Quindi, vediamo come caricare e utilizzare la nostra libreria dal controller.
// load curl library $ this-> load-> library ('curl'); $ obj_curl = Curl :: get_instance ($ this-> registry); $ result = $ obj_curl-> do_request ($ url); $ result = $ obj_curl-> do_request ($ url, $ params); // in caso di $ param necessari
Il $ This-> load-> library ( 'ricciolo')
la dichiarazione caricherà la nostra libreria personalizzata. Nella prossima affermazione, abbiamo chiamato il get_instance
metodo e passato il $ registro
oggetto come argomento costruttore. Finalmente, abbiamo usato il do_request
metodo per fare il ricciolo chiama!
Quindi, come puoi vedere, è abbastanza facile creare le tue librerie in OpenCart! Allo stesso modo, è possibile integrare qualsiasi libreria di terze parti in OpenCart biblioteca formattare e utilizzarlo in tutto il framework, se necessario.
Oggi abbiamo discusso il concetto di una libreria in OpenCart.
Se stai cercando librerie aggiuntive da utilizzare o da esplorare, non dimenticare di vedere cosa abbiamo a disposizione nel nostro marketplace.
Abbiamo esplorato le librerie principali e creato la nostra libreria per il ricciolo. Spero ti sia piaciuto! Condividi i tuoi pensieri e le tue domande usando il feed qui sotto!