mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-11 10:37:00 +01:00
77 lines
3.7 KiB
Plaintext
77 lines
3.7 KiB
Plaintext
Alias et Espaces de noms
|
|
========================
|
|
|
|
Yii utilise les alias de manière intensive. Un alias défini l'accès à un dossier
|
|
ou à un fichier. Les alias s'écrivent en utilisant une notation pointée similaire au format
|
|
largement utilisé pour déclarer des espaces de nom.
|
|
|
|
~~~
|
|
AliasRacine.chemin.vers.la.cible
|
|
~~~
|
|
|
|
ou `AliasRacine` est un alias vers un dossier existant. Il est possible de
|
|
définir de nouveaux alias en appelant [YiiBase::setPathOfAlias()]. Pour faciliter
|
|
les choses, dles alias suivant sont prédéfinis par Yii :
|
|
|
|
- `system`: représente le répertoire du framework Yii;
|
|
- `zii`: représente le dossier de la bibliothèque Zii;
|
|
- `application`: représente le [répertoire de base](/doc/guide/basics.application#application-base-directory) de l'application;
|
|
- `webroot`: représente le répertoire contenant le [script d'entrée](/doc/guide/basics.entry). Cet alias est disponible depuis la version 1.0.3.
|
|
- `ext`: représente le dossier qui contient toutes les [extensions](/doc/guide/extension.overview) tierces. Cet alias est disponible depuis la version 1.0.8.
|
|
|
|
En complément, si l'application utilises des [modules](/doc/guide/basics.module),
|
|
un alias racine est également prédéfini pour chaque ID de module, et représente
|
|
le répertoire de base du module correspondant. Cette fonctionnalité est disponible
|
|
depuis la version 1.0.3
|
|
|
|
[YiiBase::getPathOfAlias()] est la fonction décodage. Elle permet de transformer
|
|
un alias en son chemin correspondant. Par exemple, `system.web.CController`
|
|
sera transformé en `yii/framework/web/CController`.
|
|
|
|
Un alias permet d'importer simplement une classe. Par exemple,
|
|
pour inclure la définition de la classe [CController], il est possible
|
|
d'effectuer l'appel suivant:
|
|
|
|
~~~
|
|
[php]
|
|
Yii::import('system.web.CController');
|
|
~~~
|
|
|
|
Il est à noter que la méthode [import|YiiBase::import] est plus efficace
|
|
que les directives PHP `include` et `require`. La définition de la
|
|
classe à importer n'étant pas incluse avant que la classe ne soit utilisée.
|
|
De la même manière, importer un alias plusieurs fois est plus rapide
|
|
que d'utiliser les directives `include_once` et `require_once`.
|
|
|
|
> Tip|Astuce: Il n'est pas nécessaire d'importer ou d'inclure les classes définies par le
|
|
framework Yii. Tous les classes du core étant pré-importées.
|
|
|
|
La syntaxe suivante peut être utilisée pour importer automatiquement
|
|
l'intégralité des classes d'un dossier.
|
|
|
|
~~~
|
|
[php]
|
|
Yii::import('system.web.*');
|
|
~~~
|
|
|
|
Les alias, en dehors de l'[import|YiiBase::import], sont utilisés pour
|
|
référencer des classes. Par exemple, un alias peut être passé à
|
|
[Yii::createComponent()] pour créer une instance de la classe correspondante,
|
|
et ce, même si la classe n'a pas été incluse précédemment.
|
|
|
|
Il est important de ne pas confondre alias et espace de noms.
|
|
Un espace de noms permet de grouper de manière logique des classes
|
|
pour qu'elles puissent être différenciées d'autres classes portant le même nom.
|
|
Un alias sert uniquement à référencer un fichier de classe ou un dossier.
|
|
Les alias n'entrent donc pas en conflit avec les espaces de noms.
|
|
|
|
> Tip|Astuce : Comme les versions de PHP antérieures à la 5.3.0 ne supportent pas
|
|
nativement les espaces de noms, il n'est pas possible de créer des
|
|
instances de deux classes portant un même nom mais ayant des définitions différentes.
|
|
En conséquence, toutes les classes du framework Yii sont préfixées de la
|
|
lettre 'C' (pour 'Classe'). Cela permet de les différencier des classes
|
|
définies par l'utilisateur. Il est donc très fortement recommandé de réserver
|
|
la lettre 'C' aux classes du framework Yii et d'utiliser d'autres lettres
|
|
pour les classes utilisateur.
|
|
|
|
<div class="revision">$Id: basics.namespace.txt 1400 $</div> |