Advertisement
  1. Code
  2. OpenCart
Code

Comprender los objetos "Loader" y "Registry" en OpenCart

by
Length:ShortLanguages:

Spanish (Español) translation by Steven (you can also view the original English article)

Introducción

OpenCart se ha convertido en un framework de comercio electrónico muy útil para tiendas en línea de nivel pequeño a mediano. Aunque proporciona características integrales en su pila, mantiene un framework simple, con una arquitectura modular agradable que se puede ampliar. En este artículo, nos centraremos en ciertos elementos del proceso de arranque.

Aunque hay muchos componentes que están involucrados en el proceso típico de arranque, nos centraremos en los objetos "Registro" y "Cargador" para el curso de este tutorial. Los fragmentos de código explicados en este artículo pertenecen a OpenCart versión 2.0.x. Aunque el código de clase "Registro" es el mismo en las versiones 1.5.xy 2.0.x, el código de clase "Cargador" ha cambiado mucho. Así que nos centraremos en la versión 2.0.x de OpenCart.

El objeto Registry

Como su nombre indica, el objeto "Registro" se usa para almacenar elementos, desde variables simples hasta objetos complejos, cuando se llama al método "set". Almacena todos los elementos utilizando "clave", por lo que más tarde se puede acceder a ellos fácilmente cuando se llama al método "get".

Echemos un vistazo más de cerca al archivo de clase en sí. ¡Abre el archivo ubicado en "system/engine/registry.php" en tu editor de texto favorito!

Como puedes ver, la definición de clase es bastante simple de entender. Almacena todo en la propiedad "data" del objeto, que se declara como una matriz, y es de tipo es privado. En el método "get", verifica si "value" está disponible para la "clave" deseada, y devuelve el valor si está disponible, y "nulo" de lo contrario. En el método "set", inserta el nuevo elemento en la matriz "data" utilizando los argumentos pasados al método. Finalmente, proporciona el método "has" para verificar si cierta "clave" ya está configurada en la matriz "data".

Ahora, veamos cómo el framework OpenCart usa el objeto de registro durante la fase inicial de la ejecución de la página. Abre el archivo "index.php" en la raíz del documento de OpenCart. Verás que el objeto $registry se crea muy pronto en la ejecución del script.

Después de la creación del objeto $registry, almacena varios otros objetos utilizando el método "set". Veamos un par de ejemplos.

He enumerado aquí algunos usos de ejemplo del objeto $registry. Como habrás notado, los objetos de uso frecuente se crean y almacenan en el registro. La razón es que no tienes que crear instancias de objetos de clase común varias veces, por lo que simplemente puedes llamar al método "get" del objeto $registry para usar el objeto deseado. El enfoque es algo similar al "Patrón Singleton", en el que te ves obligado a mantener una sola instancia de la clase.

Ahora, el objeto $registry está lleno de cosas útiles, pero ¿cómo se usa? Veamos cómo se usa el objeto $db almacenado en $registry en el modelo "Activity" del módulo "Account". Abre el archivo ubicado en "catalog/model/account/activity.php"". Puedes ver que en el método "addActivity", se activa una consulta de inserción.

Quizás te preguntes cómo se llama, ya que no hay un método "db" o una propiedad definida en la clase "ModelAccountActivity". Puedes ir a la clase de modelo principal "Model" para ver si está definida allí o no. Sí, tampoco encontrarás un método o propiedad "db" en esa clase. Pero si observas de cerca la clase "Model", verás que implementa los métodos mágicos, específicamente el método "__get" en este caso.

Por ahora, supongamos que el objeto $registry se almacena en la propiedad protegida "registry" de la clase "Model". Veremos cómo se almacena cuando se crea una instancia de "Model" en la clase "Loader".

El método __get es llamado cuando llamas a cualquier método que no esté definido en la clase. En este método, "db" se pasa como argumento ya que estamos tratando de llamar a $this->db en el archivo "activity.php". Y como se discutió anteriormente, $registry tiene todos los objetos de utilidad ya almacenados durante el proceso de arranque. Por lo tanto, solo tenemos que buscar el objeto "db" utilizando la clave llamando al método "get" del objeto "Registry".

Del mismo modo, $this->load también funciona desde los archivos del controlador. En general, "Registry" es un componente realmente útil del framework de OpenCart que almacena variables y objetos de uso común, que se utilizan durante la ejecución del script.

El objeto Loader

El objeto "Loader" se usa para cargar los diferentes componentes de OpenCart según sea necesario, como modelo, controlador, idioma, vista, biblioteca, etc. Es importante tener en cuenta aquí que cuando se crea el objeto "Loader", se almacena en el objeto $registry con "load" como una clave de la matriz. Por lo tanto, puedes acceder al objeto $loader utilizando una llamada a $this->load como se explica en la sección anterior.

Ahora, veamos cómo se cargan los diferentes componentes con el "Loader". Abre "system/engine/loader.php" para ver la definición de una clase "Loader". Comenzaremos con el método "controller" para entender cómo funciona.

Es un fragmento de código que carga el controlador "common/column_left.php" y también llama al método "index". Hacemos esta llamada para obtener la salida XHTML de la columna izquierda de la página OpenCart. ¡La parte $this->load funciona de manera similar al ejemplo $this->db que expliqué anteriormente! Por lo tanto, devuelve el objeto $loader almacenado en $registry y finalmente llamará al método "controller" de la clase "Loader".

Del mismo modo, los siguientes fragmentos funcionan para cargar diferentes componentes.

Si observas las definiciones de métodos en la clase "Loader", verás que no es tan complicado entender exactamente cómo funciona. Primero, prepara la ruta del archivo para el componente correspondiente, y se incluye usando la función "include_once".

En general, "Registry" y "Loader" son dos componentes muy importantes en el framework de OpenCart que hacen las cosas mucho más fáciles para los desarrolladores de módulos.

Conclusión

Así que hoy, miramos los componentes "Loader" y "Registry" del framework OpenCart. Espero que hayas aprendido algo útil en este tutorial. ¡Y con suerte, se me ocurrirá algo más sobre el mismo tema! ¡Envía tus consultas y sugerencias utilizando el feed a continuación!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.