Aunque OpenCart proporciona muchas características en el núcleo mismo, a menudo se encontrará en la situación en la que querrá integrar una biblioteca de terceros. OpenCart tiene un concepto de la biblioteca que proporciona un conjunto común de API para las operaciones diarias, como interactuar con el sistema de configuración o el sistema de base de datos, tratar con un sistema de correo electrónico, etc. Hoy veremos cómo puede implementar su propia biblioteca personalizada en OpenCart.
En este artículo, vamos a crear una biblioteca personalizada que le permitirá hacer llamadas CURL. Trataremos de mantener las cosas simples y directas, ya que lo importante es entender el concepto en sí, la implementación puede variar según la complejidad..
Usaremos la última versión de OpenCart. También asumo que eres consciente de la estructura de módulos de OpenCart.
Entonces, ¿qué es exactamente una biblioteca en OpenCart? En términos simples, es un conjunto de scripts de utilidades que nos proporcionan la funcionalidad utilizada comúnmente en el marco. En OpenCart, encontrarás todas las bibliotecas bajo el sistema / biblioteca
directorio. Por ejemplo, una solicitud entrante es manejada por el Solicitud biblioteca, y para el manejo de respuesta hay la Respuesta biblioteca. Del mismo modo, hay bibliotecas para almacenamiento en caché, cliente, base de datos y el sistema de configuración, solo para nombrar algunos.
En general, cargará las bibliotecas requeridas en su controlador / código de modelo según sea necesario. Necesitas hacer algo como esto para cargar cualquier biblioteca:
$ cache = $ this-> load-> library ('cache');
En el ejemplo anterior, hemos cargado el cache biblioteca. Así que a partir de ahora, podrás utilizar el $ caché
Objeto para llamar a los métodos definidos en esa biblioteca. Como puede ver, es realmente una forma flexible de cargar los objetos según sea necesario.
Hoy, implementaremos una biblioteca de curl para que pueda usarla para hacer llamadas CURL usando esa biblioteca. Será útil evitar la duplicación de códigos en los controladores, ya que para cada solicitud CURL, deberá crear una instancia del objeto y configurar los encabezados comunes. Lo envolveremos en la biblioteca común para que sea reutilizable y evite la duplicación de código en los módulos..
Antes de continuar y comenzar nuestra implementación de biblioteca personalizada, echemos un vistazo rápido a una de las bibliotecas principales de OpenCart.
Como ya hemos analizado la biblioteca de caché en la sección anterior, exploremos el código de esa biblioteca. Seguir adelante y abrir sistema / biblioteca / caché.php
en tu editor de texto favorito.
cache = new $ class ($ expire); else exit ('Error: No se pudo cargar el controlador de caché'. $ driver. '¡caché!'); función pública get ($ key) return $ this-> cache-> get ($ key); conjunto de funciones públicas ($ key, $ value) return $ this-> cache-> set ($ key, $ value); eliminar función pública (tecla $) return $ this-> cache-> eliminar (tecla $);
Cosas bastante fáciles, ¿no es así? Proporciona una implementación sencilla basada en clase con los métodos requeridos. Aunque es un ejemplo muy simple, ¡podría ser bastante complejo para su caso de uso! Continúe y explore un par de bibliotecas más para familiarizarse con el concepto..
Entonces, ahora que estás al tanto de las bibliotecas principales, ¡creemos las nuestras! Crear un sistema / biblioteca / curl.php
con los siguientes contenidos.
obtener ('db'); * $ registry-> get ('cache'); * $ registry-> get ('session'); * $ registry-> get ('config'); * y más… * / función protegida __construct ($ registry) // cargar la biblioteca "Log" desde "Registry" $ this-> logger = $ registry-> get ('log'); / ** * @param string $ url Url * @param array $ params Par clave-valor * / public function do_request ($ url, $ params = array ()) // registrar la solicitud $ this-> logger-> write ("Solicitud CURL iniciada para: $ url"); // init curl object $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // prepare post array si está disponible $ params_string = "; if (is_array ($ params) && count ($ params)) foreach ($ params as $ key => $ value) $ params_string. = $ key. '=' . $ value. '&'; rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, count ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string); // ejecutar solicitud result = curl_exec ($ ch); // cierra la conexión curl_close ($ ch); return $ result;
Hemos definido un Rizo
clase con un puñado de metodos.
Comenzando con el obtener Instancia
Método, nos permite crear un objeto de la propia clase. También se asegurará de que en un momento dado tengamos una única instancia de la clase.
A continuación, hemos definido el constructor con el $ registro
argumento. Por supuesto, no necesita ningún argumento, pero, por ejemplo, lo he usado para demostrar cómo cargar otras bibliotecas usando el $ registro
objeto. En nuestro ejemplo, estamos cargando el Iniciar sesión
biblioteca y asignándolo a la registrador
propiedad. Usaremos esta biblioteca para registrar las solicitudes de curvatura con fines de depuración.!
Finalmente, hay una do_request
Método que hace todo el trabajo pesado para nosotros! Hay dos argumentos: $ url
contiene la URL a la que haremos la solicitud de curvatura, y $ params
contiene una matriz opcional de parámetros en caso de que necesitemos POSTAR datos. El siguiente código es bastante sencillo de entender: hace una llamada de enrollamiento y devuelve la respuesta!
Así que casi hemos terminado con nuestra biblioteca personalizada configurada. Lo veremos en acción en la siguiente sección..
La mayoría de las veces, terminarás llamando a las bibliotecas desde el controlador. Entonces, veamos cómo cargar y usar nuestra biblioteca desde el controlador.
// cargar biblioteca de curl $ this-> load-> library ('curl'); $ obj_curl = Curl :: get_instance ($ this-> registry); $ result = $ obj_curl-> do_request ($ url); $ result = $ obj_curl-> do_request ($ url, $ params); // en caso de $ params necesarios
los $ this-> load-> library ('curl')
declaración cargará nuestra biblioteca personalizada. En la siguiente declaración, hemos llamado obtener Instancia
método y pasó el $ registro
Objeto como argumento constructor. Finalmente, hemos usado el do_request
Método para hacer las llamadas de rizo.!
Entonces, como puede ver, ¡es muy fácil crear sus propias bibliotecas en OpenCart! Del mismo modo, puede integrar cualquier biblioteca de terceros en OpenCart biblioteca Formato y usarlo en todo el marco según sea necesario.
Hoy, hemos discutido el concepto de una biblioteca en OpenCart.
Si está buscando bibliotecas adicionales para usar o explorar, no olvide ver lo que tenemos disponible en nuestro mercado.
Hemos explorado las bibliotecas principales y hemos creado nuestra propia biblioteca para rizos. Espero que lo hayas disfrutado! Comparta sus pensamientos y consultas utilizando el siguiente feed!