Le ModuleLoader est un outil central dans YayaToolsTouch qui simplifie le chargement, l'initialisation et la gestion des modules. Il permet de charger dynamiquement des modules sans avoir à gérer manuellement les chemins de fichiers ou les dépendances. En quelques lignes de code, vous pouvez instancier des modules avec ou sans paramètres, selon vos besoins.
Voici un exemple simple pour illustrer comment utiliser le ModuleLoader pour charger et instancier des modules :
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
MapHelper = ModuleLoader:load("MapHelper")()
Logger = ModuleLoader:load("logger")(1)
Json = ModuleLoader:load("Json")()
PushSafer = ModuleLoader:load("PushSafer")("sfgdhdfghgfh")
List = ModuleLoader:load("List")
Utils = ModuleLoader:load("Utils")()
ModuleLoader = dofile(global:getCurrentDirectory() .. [[\YayaToolsTouch\Module\ModuleLoader.lua]])(1)
Dans cet exemple, nous chargeons le fichier ModuleLoader.lua, puis nous l'initialisons en lui passant un paramètre, ici 1, qui définit le niveau de journalisation du logger. Voici les différents niveaux disponibles :
1 : Affiche tous les messages (debug, information, avertissement, erreur).
2 : Affiche uniquement les messages d'information et d'avertissement.
3 : Affiche seulement les avertissements et les erreurs.
4 : Affiche uniquement les erreurs.
Le niveau que vous choisissez dépend du degré de détail que vous souhaitez voir dans vos logs.
MapHelper = ModuleLoader:load("MapHelper")()
Le module MapHelper est chargé, puis instancié sans paramètres supplémentaires. L'appel () à la fin est nécessaire pour créer une instance du module.
Logger = ModuleLoader:load("logger")(1)
Ici, le module Logger est chargé et instancié avec le paramètre 1, qui représente le niveau de journalisation. Certains modules nécessitent des paramètres lors de leur création.
PushSafer = ModuleLoader:load("PushSafer")("azdfsdfsdgsdg")
Ce module est instancié avec une clé API, nécessaire pour son fonctionnement. Il illustre comment passer des paramètres spécifiques à un module lors de l'instanciation.
List = ModuleLoader:load("List")
Dans cet exemple, le module List est chargé, mais sans être instancié immédiatement. Contrairement aux modules qui nécessitent une instanciation directe, ici, le module est simplement prêt à être utilisé plus tard dans le script. Cette approche est particulièrement avantageuse pour plusieurs raisons :
Création multiple d'instances : En chargeant le module sans l'instancier, vous pouvez créer plusieurs instances distinctes de List à différents moments dans le même script, chacune avec ses propres données. Par exemple :
local myFirstList = List()
local mySecondList = List()
Cela permet de manipuler plusieurs listes indépendantes avec leurs propres éléments sans interférer les unes avec les autres.
Flexibilité et optimisation : En retardant l'instanciation, vous ne créez d'instance qu'au moment où elle est réellement nécessaire, économisant ainsi des ressources. Vous pouvez également personnaliser chaque instance en fonction des besoins du script.
Cette méthode est donc idéale lorsque vous avez besoin de gérer plusieurs objets du même type au sein d'un même script, chacun ayant ses propres données ou comportements.
Une instance est un objet créé à partir d'une classe ou d'un module. Lorsque vous chargez un module via le ModuleLoader, vous créez une instance de ce module en appelant () après le chargement. Cela vous permet d'utiliser les fonctions et propriétés de ce module dans votre code.
Exemple :
Logger = ModuleLoader:load("logger")(1)
ModuleLoader:load("logger") charge le module Logger.
() instancie ce module.
(1) passe un paramètre lors de la création de l'instance.
Certains modules nécessitent des paramètres spécifiques lors de leur instanciation. Cela peut être une clé API, un niveau de journalisation, ou d'autres informations propres au module. Il est important de vérifier la documentation de chaque module pour savoir quels paramètres sont nécessaires.
Exemple avec clé API :
PushSafer = ModuleLoader:load("PushSafer")("ghjhjgdsgj")
Ici, le module PushSafer utilise une clé API pour authentifier les requêtes vers le service PushSafer. Chaque module peut avoir des besoins différents en termes de paramètres.
Le ModuleLoader vous permet de simplifier considérablement la gestion de vos modules dans Ankabot. En le combinant avec des modules spécifiques et leurs paramètres, vous pouvez structurer votre code de manière efficace, modulaire, et facile à maintenir.
N'oubliez pas de toujours vérifier si un module nécessite des paramètres spécifiques lors de son chargement et de consulter la documentation pour en savoir plus sur son utilisation.
Avec cette approche, vous optimisez votre développement sur Ankabot, tout en rendant vos scripts plus faciles à déboguer et à étendre.