6.0 KiB
Aliasy
Aliasy używane są do reprezentowania ścieżek do plików lub adresów URL i pozwalają uniknąć konieczności wielokrotnego definiowania ich
w kodzie aplikacji. Alias musi zaczynać się od znaku @
, dla odróżnienia od zwykłej ścieżki i adresu URL. W przypadku zdefiniowania
aliasu bez tego znaku, będzie on automatycznie dodany na początku.
Yii korzysta z wielu predefiniowanych aliasów. Dla przykładu, alias @yii
reprezentuje ścieżkę instalacji frameworka, a @web
bazowy
adres URL aktualnie uruchomionej aplikacji Web.
Definiowanie aliasów
Możesz zdefiniować alias do ścieżki pliku lub adresu URL wywołując Yii::setAlias():
// alias do ścieżki pliku
Yii::setAlias('@foo', '/path/to/foo');
// alias do adresu URL
Yii::setAlias('@bar', 'http://www.example.com');
Note: nie jest konieczne, aby aliasowana ścieżka pliku lub URL wskazywał istniejący plik lub zasób.
Mając już zdefiniowany alias, możesz rozbudować go, tworząc nowy alias (bez konieczności wywołania Yii::setAlias()), dodając
ukośnik /
i kolejne segmenty ścieżki. Aliasy zdefiniowane za pomocą Yii::setAlias() nazywane są bazowymi aliasami, a te, które
je rozbudowują aliasami pochodnymi. Dla przykładu, @foo
jest aliasem bazowym, a @foo/bar/file.php
pochodnym.
Możesz definiować aliasy używając innych aliasów (zarówno bazowych, jak i pochodnych):
Yii::setAlias('@foobar', '@foo/bar');
Aliasy bazowe są zwykle definiowane podczas fazy bootstrappingu.
Możliwe jest wywołanie Yii::setAlias() już w skrypcie wejściowym.
Aplikacja dla wygody deweloperów posiada właściwość aliases
, którą można zmodyfikować
w konfiguracji:
return [
// ...
'aliases' => [
'@foo' => '/path/to/foo',
'@bar' => 'http://www.example.com',
],
];
Rozwiązywanie aliasów
Możesz wywołać Yii::getAlias(), aby rozwiązać alias, czyli zamienić go na ścieżkę pliku lub adres URL, który reprezentuje. Dotyczy to zarówno bazowych aliasów, jak i pochodnych:
echo Yii::getAlias('@foo'); // wyświetla: /path/to/foo
echo Yii::getAlias('@bar'); // wyświetla: http://www.example.com
echo Yii::getAlias('@foo/bar/file.php'); // wyświetla: /path/to/foo/bar/file.php
Ścieżka/URL reprezentowany przez pochodny alias jest ustalany poprzez zamianę części z bazowym aliasem na jego rozwiązaną reprezentację.
Note: Metoda Yii::getAlias() nie sprawdza, czy reprezentowana ścieżka/URL wskazuje na istniejący plik lub zasób.
Alias bazowy może również zawierać ukośnik /
. Metoda Yii::getAlias() potrafi określić, która część aliasu jest aliasem bazowym
i prawidłowo określić odpowiadającą mu ścieżkę pliku lub URL:
Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
Yii::getAlias('@foo/test/file.php'); // wyświetla: /path/to/foo/test/file.php
Yii::getAlias('@foo/bar/file.php'); // wyświetla: /path2/bar/file.php
Gdyby @foo/bar
nie był zdefiniowany jako bazowy alias, ostatnia instrukcja wyświetliłaby /path/to/foo/bar/file.php
.
Korzystanie z aliasów
Aliasy są rozwiązywane automatycznie w wielu miejscach w Yii bez konieczności wywołania bezpośrednio metody Yii::getAlias().
Przykładowo, yii\caching\FileCache::cachePath akceptuje zarówno ścieżkę pliku, jak i alias ją reprezentujący, odróżniając je
od siebie dzięki prefiksowi @
.
use yii\caching\FileCache;
$cache = new FileCache([
'cachePath' => '@runtime/cache',
]);
Aby sprawdzić, czy dana właściwość lub parametr metody wspierają użycie aliasów, zapoznaj się z dokumentacją API.
Predefiniowane aliasy
Yii predefiniuje zestaw aliasów do łatwego wskazywania często używanych ścieżek plików i adresów URL:
@yii
, folder, w którym znajduje się plikBaseYii.php
(nazywany także folderem frameworka).@app
, yii\base\Application::basePath aktualnie używanej aplikacji.@runtime
, yii\base\Application::runtimePath aktualnie używanej aplikacji. Domyślnie wskazuje na@app/runtime
.@webroot
, folder bazowy Web aktualnie używanej aplikacji Web. Określany jest jako lokalizacja folderu zawierającego skrypt wejścia.@web
, bazowy adres URL aktualnie używanej aplikacji Web. Wskazuje na tą samą wartość co yii\web\Request::baseUrl.@vendor
, yii\base\Application::vendorPath. Domyślnie wskazuje na@app/vendor
.@bower
, bazowy folder zawierający pakiety bowera. Domyślnie wskazuje na@vendor/bower
.@npm
, bazowy folder zawierający pakiety npm. Domyślnie wskazuje na@vendor/npm
.
Alias @yii
jest definiowany poprzez dołączenie pliku Yii.php
w skrypcie wejścia.
Pozostałe aliasy są definiowane w konstruktorze aplikacji podczas ładowania konfiguracji.
Aliasy rozszerzeń
Instalacja rozszerzenia za pomocą composera automatycznie definiuje dla niego alias.
Każdy z takich aliasów jest nazwany zgodnie z bazową przestrzenią nazw rozszerzenia określonej w swoim pliku composer.json
i reprezentuje bazowy folder pakietu. Dla przykładu, instalując rozszerzenie yiisoft/yii2-jui
automatycznie uzyskasz alias
@yii/jui
zdefiniowany podczas fazy bootstrappingu, będący odpowiednikiem wywołania:
Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');