Bonjour,

Je suis en apprentissage POO,
et je cherche à importer des classes d'un autre namespace que le mien dans un fichier dans lequel j'ai déclaré mon namespace.

Le problème est que j'ai un autoloader qui importe les classes de mon namespace, et donc dès que je veux instancié un objet d'une classe d'un autre namespace que le mien, cela ne fonctionne pas, ce qui est normal.

Comment faire dans ce cas?

De plus, dans le cas ou on travaille avec des classes de namespaces différents, quelle et la meilleures façon de travailler?
Déclarer chaque namespace? utiliser use? ...?

namespace mon_namespace {
}

namespace autre_namespace {
}

namespace {
}

Merci pour votre aide

4 réponses


Salut,

Regarde cette vidéo, elle va t'aider. L'autoloader de composer est la meilleure solution que je connaisse.
https://www.grafikart.fr/tutoriels/php/autoload-php-psr-510

Merci Balsakup... c'est en effet l'autoloader qu'il faut...
Pas immédiatement accessible pour un débutant en POO... mais on va s'accrocher ;)

en gros vois les namespaces comme des dossiers, si tu es dans le même namespace qu'une autre classe, tu peux l'appeller directement. Si la classe que tu veux est dans un "sous-dossier", tu peux appeller la classe par rapport à là où tu es.

Si la classe est dans un namespace n'ayant pas la même racien que là où tu te trouve, il faut alors l'appeller en absolu (commencant par \ qui represente la racine de tout namespace).

Et après tu as des "raccourcis" par le biais des "use" qui vont permettre de remplacer des noms de classes assez long par un mot plus court;

Pour apprendre à faire ton propre autoloader, dans ton projet, crée toi un dossier classes et dedans mets tes classes en arborescence.

Fais toi ensuite ton propre autoloader qui en fonction de la classe appellée, pourra inclure le bon fichier.

Merci pour ces eclaircissements eltharin...