2013-09-21 6 views
0

Je suis en train de comprendre comment utiliser l'espace de noms en php. J'ai lu sur la façon de l'utiliser et pour une raison que je ne peux pas le faire fonctionner. J'ai deux fichiers un que j'ai stockées dans Applications/Database/Classes nom de fichier est DatabaseConnection.php et l'autre dans le répertoire racine appelé DB.php dans le fichier DatabaseConnection.php Je le code suivant:utilisant php namespaces correctement

<?php 
    function hello() 
    { 
     echo "hello"; 
    } 
?> 

Ceci est le contenu du fichier DB.php:

<?php 
namespace Applications\Database\Classes; 
ini_set('display_errors', true); 
hello(); 
?> 

Peut-être que je suis complètement manque comment l'utiliser correctement, mais si je mets un espace de noms est la même chose que l'utilisation include ou require? Je pourrais être complètement mal compris comment l'utiliser. Je suis nouveau à POO et n'ai jamais entendu parler d'espaces de noms jusqu'à ce que j'ai commencé à essayer d'apprendre POO? Quelqu'un peut-il souligner ce que j'ai fait de mal?

+0

Je connais certains Trekkies ... ils utilisent des noms d'espace presque de la même manière que vous;) – djot

+0

Je n'ai jamais eu de Star Trek – Yamaha32088

+2

Les espaces de noms ne requièrent pas automatiquement les fichiers. Vous pouvez cependant utiliser un [autochargeur] (http://php.net/manual/fr/language.oop5.autoload.php) – Rob

Répondre

1

espaces de noms sont pour l'organisation de votre code afin que vous puissiez partager des composants et aider à la lisibilité. Par exemple, si j'ai une classe Pittbull et un autre Dashund je peux les placer dans un espace de noms comme tant pour l'organisation:

Animals.Dogs.Pittbull 
Animals.Dogs.Dashund 

Cela permet également aux collisions potentielles comme le ci-dessous:

Animals.Dogs.Misc 
Animals.Cats.Misc 

La classe Misc existe deux fois dans cette instance, mais au lieu d'un conflit dont Misc à utiliser, vous pouvez utiliser le même nom de classe pour les deux classes (et avoir des propriétés et des méthodes différentes à l'intérieur) et ne pas avoir de conflit utiliser.

Le mot-clé require est un concept complètement différent et est utilisé pour charger des fichiers réels dans le script d'exécution.