Maison  >  Article  >  développement back-end  >  Yii Framework Official Guide Series 12 - Connaissances de base : alias de chemin et espaces de noms

Yii Framework Official Guide Series 12 - Connaissances de base : alias de chemin et espaces de noms

黄舟
黄舟original
2017-02-11 09:47:101475parcourir



Les alias de chemin sont largement utilisés dans Yii. Un alias de chemin est associé au chemin d'un répertoire ou d'un fichier. Il est spécifié dans une syntaxe de points, similaire au format d'espace de noms largement utilisé :

RootAlias.path.to.target

RootAlias est un alias pour un répertoire existant.

En utilisant YiiBase::getPathOfAlias(), les alias peuvent être traduits vers leurs chemins correspondants . Par exemple, system.web.CController serait traduit par yii/framework/web/CController.

En appelant YiiBase::setPathOfAlias(), nous pouvons définir un nouvel alias de chemin racine.

1. Alias ​​racine

Pour plus de commodité, Yii prédéfinit les alias racine suivants :

  • system : représente le répertoire du framework Yii ;

  • zii : représente le répertoire de la bibliothèque Zii

  • application : représente le répertoire de base de l'application

  • webroot : Indique le répertoire où se trouve le fichier script d'entrée. Cet alias est valide à partir de la version 1.0.3.

  • ext : Représente le répertoire contenant toutes les extensions tierces. Cet alias est valide à partir de la version 1.0.8.

De plus, si l'application utilise des modules, (Yii) définit également un alias racine pour chaque ID de module, pointant vers le répertoire racine du module correspondant. Cette fonctionnalité est disponible à partir de la version 1.0.3.

En utilisant YiiBase::getPathOfAlias(), les alias peuvent être traduits vers leurs chemins correspondants. Par exemple, system.web.CController serait traduit par yii/framework/web/CController.

2. Importation de classes

L'utilisation d'alias peut facilement importer des définitions de classe. Par exemple, si nous voulons inclure la définition de la classe CController, nous pouvons appeler le code suivant


Yii::import('system.web.CController');

La méthode d'importation suivie de include est différente de require en ce sens qu'elle est plus efficace. Une définition de classe importée n'est réellement incluse que lorsqu'elle est référencée pour la première fois . Importer le même espace de noms plusieurs fois sera également beaucoup plus rapide que include_once et require_once .

Astuce : Lors du référencement d'une classe définie par le framework Yii, nous n'avons pas besoin de l'importer ou de l'inclure. Toutes les classes de base de Yii ont été importées à l'avance.

Utilisation de Class Map

À partir de la version 1.1.5, Yii permet de pré-importer des classes définies par l'utilisateur à l'aide de Class Map mécanisme. C'est aussi la méthode utilisée par les classes intégrées Yii . Le mécanisme d'importation hâtive peut être utilisé n'importe où dans une application Yii sans importer ou inclure explicitement des fichiers. Cette fonctionnalité est utile pour un framework ou une bibliothèque construite sur Yii.

Pour utiliser la fonction de pré-importation, exécutez le code suivant avant l'exécution de CWebApplication::run() :


Yii::$classMap=array(
    'ClassName1' => 'path/to/ClassName1.php',
    'ClassName2' => 'path/to/ClassName2.php',
    ......
);

3. Importer le répertoire

Nous pouvons également utiliser la syntaxe suivante pour importer l'intégralité du répertoire, afin que les fichiers de classe de ce répertoire soient automatiquement inclus en cas de besoin.


Yii::import('system.web.*');

En plus de l'importation, les alias pointent vers des classes dans de nombreux autres endroits. Par exemple, un alias de chemin peut être transmis à Yii::createComponent() pour créer une instance de la classe correspondante. Même si le fichier de classe n'a jamais été inclus auparavant.

4. Espace de noms

Ne confondez pas les alias de chemin avec les espaces de noms. Un espace de noms fait référence à une combinaison logique de certains noms de classes afin qu'ils puissent être distingués les uns des autres, même s'ils ont le nom. même nom. L'alias de chemin est utilisé pour pointer vers un fichier ou un répertoire de classe. Les alias de chemin n'entrent pas en conflit avec les espaces de noms.

Astuce : Étant donné que PHP avant la version 5.3.0 ne prend pas en charge les espaces de noms, vous ne pouvez pas créer deux instances d'une classe avec le même nom mais des définitions différentes. Pour cette raison, toutes les classes du framework Yii sont préfixées par la lettre « C » (qui signifie « Classe ») afin de pouvoir les distinguer des classes définies par l'utilisateur. Nous recommandons que le préfixe « C » soit réservé uniquement au framework Yii et que les classes définies par l'utilisateur soient préfixées par d'autres lettres.

5. Classes utilisant des espaces de noms

Une classe utilisant des espaces de noms fait référence à une classe déclarée dans un espace de noms non global. Par exemple, la classe applicationcomponentsGoogleMap est une classe sous l'espace de noms applicationcomponents. L'utilisation d'espaces de noms nécessite PHP 5.3.0 ou supérieur.

A partir de la 1.1.5, il est possible d'utiliser une classe contenant un espace de noms sans l'introduire explicitement. Par exemple, nous pouvons créer une instance de applicationcomponentsGoogleMap sans avoir à gérer le chemin importé, améliorant ainsi le mécanisme d'importation automatique de Yii.

Pour importer automatiquement des classes à l'aide d'espaces de noms, le format de l'espace de noms doit être similaire à l'alias du chemin . Par exemple, le chemin correspondant à la classe applicationcomponentsGoogleMap doit être cohérent avec l'alias application.components.GoogleMap.

Ce qui précède est la série 12 du guide officiel du framework Yii - Connaissances de base : alias de chemin et espaces de noms. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !


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