Comment créer une bibliothèque personnalisée dans OpenCart

Bien qu'OpenCart fournisse de nombreuses fonctionnalités dans le noyau lui-même, vous vous retrouverez souvent dans la situation dans laquelle vous voudrez y intégrer une bibliothèque tierce. OpenCart a un concept de bibliothèque qui fournit un ensemble commun d’API pour les opérations quotidiennes, telles que l’interaction avec le système de configuration ou le système de base de données, le traitement d’un système de messagerie, etc. Aujourd'hui, nous allons voir comment vous pouvez implémenter votre propre bibliothèque personnalisée dans OpenCart.

Dans cet article, nous allons créer une bibliothèque personnalisée qui vous permettra de faire des appels CURL. Nous allons essayer de garder les choses simples et simples, car la chose importante à comprendre est le concept lui-même - la mise en œuvre peut varier en fonction de la complexité..

Nous allons utiliser la dernière version d'OpenCart. Je suppose également que vous connaissez la structure de module d'OpenCart.

Qu'est-ce qu'une bibliothèque dans OpenCart?

Alors, qu'est-ce qu'une bibliothèque dans OpenCart? En termes simples, il s'agit d'un ensemble de scripts utilitaires nous fournissant les fonctionnalités couramment utilisées dans la structure. Dans OpenCart, vous trouverez toutes les bibliothèques sous le système / bibliothèque annuaire. Par exemple, une demande entrante est traitée par le Demande bibliothèque, et pour la gestion de la réponse il y a la Réponse bibliothèque. De même, il existe des bibliothèques pour la mise en cache, le client, la base de données et le système de configuration, pour ne citer que quelques exemples..

En règle générale, vous chargez les bibliothèques requises dans votre code de contrôleur / modèle selon vos besoins. Vous devez faire quelque chose comme ceci pour charger n'importe quelle bibliothèque:

$ cache = $ this-> load-> library ('cache');

Dans l'exemple ci-dessus, nous avons chargé le cache bibliothèque. Donc, à partir de maintenant, vous pourrez utiliser le $ cache object pour appeler les méthodes définies dans cette bibliothèque. Comme vous pouvez le constater, c’est vraiment un moyen flexible de charger les objets au besoin.

Aujourd'hui, nous allons implémenter une bibliothèque curl afin que vous puissiez l'utiliser pour passer des appels CURL à l'aide de cette bibliothèque. Il sera utile d'éviter la duplication de code dans les contrôleurs, car pour chaque demande CURL, vous devrez instancier l'objet et configurer les en-têtes communs. Nous l'envelopperons dans la bibliothèque commune afin qu'elle soit réutilisable et évitera la duplication de code entre les modules..

Avant de commencer et de commencer l'implémentation de notre bibliothèque personnalisée, jetons un coup d'œil à l'une des bibliothèques principales d'OpenCart..

Explorez le code de la bibliothèque principale

Comme nous avons déjà parlé de la bibliothèque de cache dans la section précédente, explorons le code de cette bibliothèque. Allez-y et ouvrez system / library / cache.php dans votre éditeur de texte préféré.

cache = new $ class ($ expire);  else exit ('Erreur: Impossible de charger le pilote de cache'. $ driver. 'cache!');  fonction publique get ($ key) return $ this-> cache-> get ($ key);  public function set ($ key, $ value) return $ this-> cache-> set ($ key, $ value);  fonction publique delete ($ key) return $ this-> cache-> delete ($ key); 

C'est assez facile, n'est-ce pas? Il fournit une implémentation simple basée sur les classes avec les méthodes requises. Bien que ce soit un exemple très simple, cela pourrait être assez complexe pour votre cas d'utilisation! Allez-y et explorez quelques autres bibliothèques pour vous familiariser avec le concept.

Créer une bibliothèque personnalisée: Curl

Alors maintenant, vous connaissez les bibliothèques de base, créons nos propres bibliothèques! Créer un système / bibliothèque / curl.php avec le contenu suivant.

get ('db'); * $ registry-> get ('cache'); * $ registry-> get ('session'); * $ registry-> get ('config'); * et plus… * / protected function __construct ($ registry) // charge la bibliothèque "Log" à partir du "Registry" $ this-> logger = $ registry-> get ('log');  / ** * @param chaine $ url Url * @param tableau $ params Paire clé-valeur * / fonction publique do_request ($ url, $ params = array ()) // enregistre la demande $ this-> logger-> write ("Demande CURL lancée pour: $ url"); // init curl object $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); // prépare un tableau de poste si disponible $ params_string = "; if (is_array ($ params) && count ($ params)) foreach ($ params as $ key => $ valeur) $ params_string. = $ key. '=' . $ valeur. '&'; rtrim ($ params_string, '&'); curl_setopt ($ ch, CURLOPT_POST, compte ($ params)); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ params_string); // exécuter la requête $ result = curl_exec ($ ch); // ferme la connexion curl_close ($ ch); return $ result;

Nous avons défini un Boucle classe avec une poignée de méthodes.

En commençant par le get_instance méthode, elle nous permet de créer un objet de la classe elle-même. Cela nous permettra également de nous assurer qu'à tout moment nous aurons une seule instance de la classe.

Ensuite, nous avons défini le constructeur avec le $ registre argument. Bien sûr, vous n'avez pas besoin d'argument, mais à titre d'exemple, je l'ai utilisé pour montrer comment charger d'autres bibliothèques à l'aide de la commande $ registre objet. Dans notre exemple, nous chargeons le Bûche bibliothèque et l'assigner à la enregistreur propriété. Nous allons utiliser cette bibliothèque pour enregistrer les demandes de curl à des fins de débogage!

Enfin, il y a un do_request méthode qui fait tout le gros du travail pour nous! Il y a deux arguments: $ url contient l'URL à laquelle nous allons faire la demande curl, et $ params contient un tableau optionnel de paramètres au cas où nous aurions besoin de POST des données. Le code qui suit est assez simple à comprendre: il effectue un appel curl et renvoie la réponse!

Nous avons donc presque fini de configurer notre bibliothèque personnalisée. Nous verrons cela en action dans la section suivante.

Comment utiliser notre bibliothèque personnalisée

La plupart du temps, vous appelez des bibliothèques à partir du contrôleur lui-même. Voyons maintenant comment charger et utiliser notre bibliothèque à partir du contrôleur.

// charge la bibliothèque 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 cas de besoin de $ params

le $ this-> load-> library ('curl') instruction va charger notre bibliothèque personnalisée. Dans la déclaration suivante, nous avons appelé le get_instance méthode et passé le $ registre objet en tant qu'argument constructeur. Enfin, nous avons utilisé le do_request méthode pour faire les appels curl!

Comme vous pouvez le constater, il est très facile de créer vos propres bibliothèques dans OpenCart! De même, vous pouvez intégrer n'importe quelle bibliothèque tierce dans OpenCart. bibliothèque formater et utiliser dans le cadre au besoin.

Conclusion

Aujourd’hui, nous avons discuté du concept de bibliothèque dans OpenCart.. 

Si vous recherchez des bibliothèques supplémentaires à utiliser ou à explorer, n'oubliez pas de voir ce que nous avons sur notre marché..

Nous avons exploré les bibliothèques de base et créé notre propre bibliothèque pour curl. J'espère que ça vous a plu! Partagez vos pensées et vos requêtes en utilisant le flux ci-dessous!