0 follower

Aliasy i przestrzenie nazw

Yii używa w dużym stopniu aliasów ścieżek. Alias ścieżki reprezentuje katalog lub też ścieżkę pliku. Zapisany jest przy użyciu składni zawierającej kropki, podobnej do powszechnie znanego formatu przestrzeni nazw:

AliasGłowny.ścieżka.do.celu

gdzie AliasGłówny jest aliasem do pewnego istniejącego folderu. Poprzez wywołanie YiiBase::setPathOfAlias() możemy zdefiniować nowe aliasy ścieżek. Dla wygody, Yii predefiniuje domyślne, główne aliasy:

  • system: wskazuje katalog framework Yii;
  • zii: wskazuje na katalog z biblioteką zii;
  • application: wskazuje do folderu głównego aplikacji;
  • webroot: wskazuje na katalog zawierający plik skryptu wejściowego. Alias ten został wprowadzony wraz z wersją 1.0.3.
  • ext: wskazuje na katalog zawierający wszystkie rozszerzenia stron trzecich. Alias ten został wprowadzony wraz z wersją 1.0.8.

Dodatkowo, jeśli aplikacja używa modułów alias główny jest również predefiniowany dla każdego ID modułu i wskazuje na katalog główny odpowiedniego modułu. Funkcjonalność ta jest dostępna od wersji 1.0.3.

Używając YiiBase::getPathOfAlias() alias może zostać przetłumaczony na odpowiadającą mu ścieżkę. Na przykład system.web.CController będzie przetłumaczony jako yii/framework/web/CController.

Używanie aliasów jest bardzo wygodne dla importowania definicji klasy. Na przykład, jeśli chcemy dołączyć definicję klasy CController, możemy to zrobić następująco:

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

Metoda import różni się od include oraz require w tym, że jest bardziej wydajna. Definicja klasy, która została importowana, nie jest ładowana dopóki, nie zostanie użyta po raz pierwszy. Importowanie wielokrotnie tej samej przestrzeni nazw jest także dużo szybsze niż include_once czy też require_once.

Wskazówka: Kiedy odnosimy się do klasy zdefiniowanej we frameworku Yii, nie musimy importować jej lub dołączać. Wszystkie klasy Yii są preimportowane.

Możemy również użyć następującej składni do importowania całego katalogu, tak, że wszystkie pliki klas w katalogu będą automatycznie dołączone gdy zajdzie taka potrzeba.

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

Poza metodą import aliasy są używane w wielu innych miejscach odnoszących się do klasy. Na przykład, alias może zostać przekazany do metody Yii::createComponent() w celu utworzenia instancji klasy komponentu, nawet jeśli plik klasy nie był dołączony wcześniej.

Nie myl ścieżek plików z przestrzeniami nazw. Przestrzeń nazw wskazuje na logiczną grupę nazw klas, tak, że mogą one zostać odróżnione od innych klas, nawet jeśli ich nazwy są identyczne, podczas gdy alias jest używany do wskazywania pliku klasy bądź też katalogu. Aliasy ścieżek nie kłócą się z przestrzenią nazw.

Wskazówka: Ponieważ wcześniejsze wersje PHP niż 5.3.0 nie wspierały przestrzeni nazw, nie możesz stworzyć instancji dwóch klasy, które posiadają tą samą nazwę ale różnią się definicjami. Z tego powodu, Wszystkie klasy frameworku poprzedzone są prefiksem zawierającym literę 'C' (od ang. 'class' - klasa), tak, by móc je rozróżnić od klas zdefiniowanych przez użytkownika. Zaleca się, aby prefix 'C' był zarezerwowany wyłącznie dla frameworku Yii a klasy użytkownika były poprzedzone prefiksem składającym się z innej litery.