Loa alias son utilizados para representar rutas o URLs de manera que no tengas que escribir explícitamente rutas absolutas o URLs en tu
proyecto. Un alias debe comenzar con el signo @
para ser diferenciado de una ruta normal de archivo y de URLs. Los alias definidos
sin el @
del principio, serán prefijados con el signo @
.
Yii trae disponibles varios alias predefinidos. Por ejemplo, el alias @yii
representa la ruta de instalación del
framework Yii; @web
representa la URL base para la aplicación Web ejecutándose.
Para definir un alias puedes llamar a Yii::setAlias() para una determinada ruta de archivo o URL. Por ejemplo,
// un alias de una ruta de archivos
Yii::setAlias('@foo', '/path/to/foo');
// una alias de un URL
Yii::setAlias('@bar', 'https://www.example.com');
Nota: Una ruta de archivo o URL en alias NO debe necesariamente referirse a un archivo o recurso existente.
Dado un alias, puedes derivar un nuevo alias (sin necesidad de llamar Yii::setAlias()) anexando una barra diagonal /
seguida por uno o varios segmentos de la ruta. Llamamos los alias definidos a través de Yii::setAlias()
alias de raíz (root alias), mientras que los alias derivados de ellos alias derivados (derived aliases). Por ejemplo,
@foo
es un alias de raíz, mientras que @foo/bar/file.php
es un alias derivado.
Puedes definir un alias usando otro alias (ya sea un alias de raíz o derivado):
Yii::setAlias('@foobar', '@foo/bar');
Los alias de raíz están usualmente definidos durante la etapa bootstrapping de la aplicación.
Por ejemplo, puedes llamar a Yii::setAlias() en el script de entrada.
Por conveniencia, Application provee una propiedad modificable llamada aliases
que puedes
configurar en la configuración de la aplicación, como por ejemplo,
return [
// ...
'aliases' => [
'@foo' => '/path/to/foo',
'@bar' => 'https://www.example.com',
],
];
Puedes llamar Yii::getAlias() para resolver un alias de raíz en la ruta o URL que representa. El mismo método puede además resolver un alias derivado en su correspondiente ruta de archivo o URL. Por ejemplo,
echo Yii::getAlias('@foo'); // muestra: /path/to/foo
echo Yii::getAlias('@bar'); // muestra: https://www.example.com
echo Yii::getAlias('@foo/bar/file.php'); // muestra: /path/to/foo/bar/file.php
La ruta de archivo/URL representado por un alias derivado está determinado por la sustitución de la parte de su alias raíz con su correspondiente ruta/Url en el alias derivado.
Nota: El método Yii::getAlias() no comprueba si la ruta/URL resultante hacer referencia a un archivo o recurso existente.
Un alias de raíz puede contener carácteres /
. El método Yii::getAlias() es lo suficientemente inteligente para saber
qué parte de un alias es un alias de raíz y por lo tanto determinar correctamente la correspondiente ruta de archivo o URL.
Por ejemplo,
Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
Yii::getAlias('@foo/test/file.php'); // muestra: /path/to/foo/test/file.php
Yii::getAlias('@foo/bar/file.php'); // muestra: /path2/bar/file.php
Si @foo/bar
no está definido como un alias de raíz, la última declaración mostraría /path/to/foo/bar/file.php
.
Los alias son utilizados en muchos lugares en Yii sin necesidad de llamar Yii::getAlias() para convertirlos
en rutas/URLs. Por ejemplo, yii\caching\FileCache::$cachePath puede aceptar tanto una ruta de archivo como un alias
que represente la ruta de archivo, gracias al prefijo @
el cual permite diferenciar una ruta de archivo
de un alias.
use yii\caching\FileCache;
$cache = new FileCache([
'cachePath' => '@runtime/cache',
]);
Por favor, presta atención a la documentación API para ver si una propiedad o el parámetro de un método soporta alias.
Yii predefine un conjunto de alias para aliviar la necesidad de hacer referencia a rutas de archivo o URLs que son utilizadas regularmente. La siguiente es la lista de alias predefinidos por Yii:
@yii
: el directorio donde el archivo BaseYii.php
se encuentra (también llamado el directorio del framework).@app
: la ruta base de la aplicación que se está ejecutando actualmente.@runtime
: la ruta de ejecución de la aplicación en ejecución. Por defecto @app/runtime
.@webroot
: el directorio raíz Web de la aplicación Web se está ejecutando actualmente.@web
: la URL base de la aplicación web se ejecuta actualmente. Tiene el mismo valor que yii\web\Request::$baseUrl.@vendor
: el directorio vendor de Composer. Por defecto @app/vendor
.@bower
, el directorio raíz que contiene paquetes bower. Por defecto @vendor/bower
.@npm
, el directorio raíz que contiene paquetes npm. Por defecto @vendor/npm
.El alias @yii
se define cuando incluyes el archivo Yii.php
en tu script de entrada,
mientras que el resto de los alias están definidos en el constructor de la aplicación cuando se aplica la
configuración de la aplicación.
Un alias se define automáticamente por cada extensión que ha sido instalada a través de Composer.
El alias es nombrado tras el namespace
de raíz de la extensión instalada tal y como está declarada en su archivo composer.json
,
y representa el directorio raíz de la extensión. Por ejemplo, si instalas la extensión yiisoft/yii2-jui
, tendrás
automáticamente definido el alias @yii/jui
durante la etapa bootstrapping de la aplicación:
Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.