2017-02-11 7 views
1

Suite est ma structure de dossiercomment utiliser l'espace de noms au lieu d'inclure (« file.php »)

--project 
    |_____classes 
      |_____config.php 
      |_____classes.php 
    |_____project 
      |_____index.php 
      |_____dashboard.php 

Selon la structure du dossier, j'ai toutes les configurations de base de données dans config.php & je l'ai étendu dans classes.php et plus de classes dedans.

Maintenant, quand je l'utilise dans le fichier dans dashboard.php dans le dossier du projet que je dois faire quelque chose comme ça includes("../classes/config.php");

J'ai lu le concept d'espace de noms en PHP, j'ai vu beaucoup de vidéos, mais je ne suis pas capable de comprendre le concept que l'utilisation d'un espace de noms au lieu de la chose include('');.

Quelqu'un peut-il me fournir un code démo ou un code source de fichiers .zip afin que je puisse comprendre le concept à implémenter dans le projet?

Toute aide appréciée. Merci :)

+0

duplication possible de http://stackoverflow.com/questions/3384204/what-are-namespaces – rahul

+0

Essayez de lire ceci [PSR-4] (http://www.php-fig.org/psr/psr-4 /). – Ans

Répondre

4

Un espace de noms est pas un remplacement pour include ou require.

Vous pouvez utiliser une stratégie de chargement automatique pour charger des classes si nécessaire. PSR-4 est une norme recommandée pour cela, et ils ont un example implementation

Si vous utilisez Composer pour gérer les packages dans votre projet, vous pouvez configure it pour charger automatiquement vos classes

1

espace de noms est un système de répertoire virtuel. Pour utiliser le code d'un autre fichier physique, vous devez l'inclure, il n'y a pas d'autre solution.

Il suffit d'ajouter cette ligne en haut de votre page.

use \YOUR\NAMESPACE\HERE; 

et, vous pouvez utiliser cet espace de noms spécifié maintenant, mais vous devez toujours l'inclure. Pour ajouter de l'automatisation, vous pouvez utiliser la fonction spl_autoload_register() pour inclure automatiquement les fichiers lors d'un appel de classe.

+0

s'il vous plaît pouvez-vous me fournir un code de démonstration probablement je vais avoir un problème encore comprendre :( –

+0

/Classes/config.php ' '' /Project/index.php salut () ?> ' Pour omettre la partie' include', vous pouvez utiliser le package autoloader disponible chez composer ou le faire seul si vous voulez jouer avec lui comme moi. ;) –

+0

Dans votre code ci-dessus je dois encore utiliser l'include '../Classes/config.php'; chose comment enlever cette chose afin que je puisse inclure cela dans les classes.php et je dois alors juste appeler l'espace de noms dans le tableau de bord.php –