Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add namespace autoloader #2910

Open
wants to merge 1 commit into
base: alpha
Choose a base branch
from
Open

Conversation

pifou25
Copy link
Contributor

@pifou25 pifou25 commented Sep 22, 2024

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

  • Bug fix (non-breaking change which fixes)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
    • This change is only breaking for integrators, not for external standards or end-users.
  • Documentation improvement

PR checklist

@zoic21 zoic21 added this to the 4.6 milestone Sep 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants