Maison  >  Article  >  développement back-end  >  Utilisation de l'espace de noms dans thinkphp

Utilisation de l'espace de noms dans thinkphp

不言
不言original
2018-06-09 09:32:181558parcourir

Cet article présente principalement l'utilisation de l'espace de noms thinkphp et analyse en détail les fonctions et les techniques d'utilisation spécifiques de l'espace de noms thinkPHP avec des exemples. Les amis dans le besoin peuvent s'y référer

Cet article explique l'utilisation de l'espace de noms thinkphp. avec des exemples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Dans la nouvelle version (3.2), la méthode de l'espace de noms est utilisée pour définir et charger les fichiers de bibliothèque de classes, ce qui résout le problème de conflit entre plusieurs modules et obtient un mécanisme de chargement automatique plus efficace.

Vous devez définir l'espace de noms où se trouve la bibliothèque de classes. Le chemin de l'espace de noms est cohérent avec le répertoire du fichier de bibliothèque de classes, afin que la classe puisse être automatiquement chargée. Par exemple, la classe OrgUtilFile. est défini comme

namespace Org\Util;
class File {
}

Le chemin où il se trouve est ThinkPHP/Library/Org/Util/File.class.php Nous instancions cette classe comme suit :

$class = new \Org\Util\File();

Le. Le système chargera automatiquement le fichier ci-dessus, il n'est donc pas nécessaire de l'instancier dans l'instance. Le fichier de bibliothèque de classes est importé avant la classe définie dans l'espace de noms.

L'espace de noms racine est un concept très clé. En prenant la classe OrgUtilFile ci-dessus comme exemple, Org est un espace de noms racine, et son répertoire d'espace de noms initial correspondant est le répertoire de bibliothèque de classes du système ThinkPHP/Liberary, qui est de niveau inférieur. les sous-répertoires sont automatiquement reconnus comme espaces de noms racine et ces espaces de noms peuvent être utilisés sans inscription.

Nous ajoutons un répertoire d'espace de noms My root sous le répertoire Library, puis définissons une classe Test comme suit :

namespace My;
class Test
{
   public function sayHello()
  {
    echo 'hello';
  }
}

Enregistrons la classe de test dans ThinkPHP/Liberary/My/Test.class .php, nous pouvons directement instancier et appeler l'espace de noms de la bibliothèque de classes dans le module

$Test = new \My\Test();
$Test->sayHello();

qui porte le nom du nom du module, par exemple :

namespace Home\Model;
class UserModel extends \Think\Model
{
}

Le fichier de classe se trouve dans Application/ Home/Model/UserModel.class.php

namespace Admin\Event;
class UserEvent {
}

Le fichier de classe se trouve dans Application/Admin/Event/UserEvent.class.php

La version 3.2.1 ou supérieure permet définition de la bibliothèque de classes d'application Sans utiliser d'espace de noms, définissez ce qui suit dans le fichier de configuration :

'APP_USE_NAMESPACE'    =>    false,

De cette façon, la définition de l'espace de noms n'est plus nécessaire dans la bibliothèque de classes d'application, mais l'espace de noms est toujours requis lors de l'héritage et de l'appel de la bibliothèque de classes principale. Par exemple, l'espace de noms AdminModel ne sera plus écrit dans la bibliothèque de classes d'application suivante

class UserModel extends \Think\Model {
}

Remarque : si vous devez instancier la bibliothèque de classes intégrée de PHP dans ; version 3.2 ou une classe tierce qui n'utilise pas de définitions d'espace de noms, vous devez utiliser la méthode suivante :

$class =  new \stdClass();
$sxml =  new \SimpleXmlElement($xmlstr);

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il vous sera utile. tout le monde apprend. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Aperçu de l'architecture globale du framework thinkPHP5.0 [Applications, modules, MVC, pilotes, comportements, espaces de noms, etc.]

Comment utiliser la balise de modèle HTML de thinkPHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn