Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Bonjour,
Je propose d'ajouter la gestion de namespaces dans l'autoloader de Jeedom. Le namespace permet d'éviter des conflits de classes qui auraient le même nom, en particulier avec tous les plugins. Cela permettra à chaque plugin de faire ce qu'il veut dans son propre namespace. Et autre avantage, toutes les classes des plugins seront automatiquement chargées.
En plus, la fonction autoloader pourra être simplifié si jamais un jour on arrive à migrer toutes les classes dans leur namespace respectif.
En attendant, mon évolution est retro-compatible, je laisse tous les chargements spécifiques actuels. Et le namespace conserve les répertoires actuels, par exemple :
Les classes du core:
use jeedom\core\class\NewClass --> DIR/core/class/NewClass.class.php
les classes des plugins:
use jeedom\plugin\atlas\core\class\atlas --> DIR/plugin/atlas/core/class/atlas.class.php
on peut continuer ainsi avec les classes spécifiques com_* ou repo_*:
use jeedom\core\class\repo\github --> DIR/core/class/repo/github.class.php
Bref, ... déplacer les classes existantes est plutôt dangereux je suppose, mais par contre on peut simplement créer de nouvelles classes avec namespace et adopter cette convention au fil de l'eau...
Il y a encore plein de code php en dehors de toute classe, qui gagnerait à être déplacé dans de nouvelles classes.
Suggested changelog entry
Related issues/external references
Fixes #
Types of changes
PR checklist