0 follower

Sökvägsalias och namnområde

Yii använder sökvägsalias extensivt. Ett sökvägsalias är associerat till en katalog eller filsökväg. Det specificeras med punktnotation, snarlikt detta vanligt förekommande namnområdesformat (namespace format):

RootAlias.path.to.target

där RootAlias är alias för någon befintlig katalog. Nya sökvägsalias kan definieras genom anrop av YiiBase::setPathOfAlias(). För att underlätta fördefinierar Yii följande rot-alias:

  • system: refererar till Yii:s framework-katalog;
  • application: refererar till applikationens rotkatalog;
  • webroot: refererar till katalogen som innehåller startskriptet. Detta alias har varit tillgängligt sedan version 1.0.3.
  • ext: refererar till katalogen som innehåller alla tredjepartstillägg. Detta alias har varit tillgängligt sedan version 1.0.8.

Om applikationen dessutom använder sig av moduler, fördefinieras också ett rotalias för varje modul-ID. Detta alias refererar till modulens rotsökväg. Denna finess har varit tillgängligt fr o m version 1.0.3.

Genom anrop till YiiBase::getPathOfAlias() kan ett alias översättas till dess motsvarande sökväg. Till exempel, system.web.CController skulle översättas till yii/framework/web/CController.

Med hjälp av alias är det mycket bekvämt att importera definitionen för en klass. Till exempel, för att inkludera definitionen för klassen CController, kan vi skriva följande:

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

Metoden import skiljer sig från include och require genom att den är effektivare. Klassdefinitionen som skall importeras inkluderas inte förrän den refereras till första gången. Att importera samma namnområde flera gånger är också det mycket snabbare än include_once och require_once.

Tips: När en klass som definieras av Yii-ramverket refereras, behöver denna inte importeras eller inkluderas. Alla kärnklasser i Yii importeras i förväg.

Följande syntax kan användas för att importera en hel katalog, så att klassfilerna i katalogen automatiskt inkluderas när så erfordras.

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

Förutom import, används alias även på många andra ställen för att referera till klasser. Till exempel kan ett alias lämnas med till Yii::createComponent() för att skapa en instans av motsvarande klass, även om klassfilen inte tidigare inkluderats.

Förväxla inte sökvägsalias med namnområde. Ett namnområde refererar till logisk gruppering av ett antal klassnamn så att de kan särskiljas från andra klasser med samma namn, medan sökvägsalias används för att referera till en klassfil eller sökväg. Det uppstår ingen konflikt mellan sökvägsalias och namnområden.

Tips: Då PHP före version 5.3.0 inte har inbyggt stöd för namnområden, går det inte att ha instanser av två klasser med samma namn men olika definitioner. Av denna anledning har alla Yii-klasser namn med prefixet 'C' (som i 'class'), så att de kan skiljas från användardefinierade klasser. Det rekommenderas att C- prefixet reserveras för användning endast av Yii-ramverket, och att användardefinierade klasser förses med någon annan prefixbokstav.