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 de l'application;
  • webroot: représente le répertoire contenant le script d'entrée. Cet alias est disponible depuis la version 1.0.3.
  • ext: représente le dossier qui contient toutes les extensions tierces. Cet alias est disponible depuis la version 1.0.8.

En complément, si l'application utilises des modules, 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:

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

Il est à noter que la méthode 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.

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.

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

Les alias, en dehors de l'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.

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.

$Id: basics.namespace.txt 1400 $

Be the first person to leave a comment

Please to leave your comment.