Maison > Article > développement back-end > Yii Framework Official Guide Series 12 - Connaissances de base : alias de chemin et espaces de noms
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
où 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.
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
.
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', ...... );
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.
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.
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) !