亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

direktori cari
閱讀前篇 簡介 Yii 是什么 從 Yii 1.1 升級 入門 安裝 Yii 運行應用 第一次問候 使用Forms 數據庫應用 使用 Gii 生成代碼 進階 應用結構 概述 入口腳本 應用(Applications) 應用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴展(Extensions) 請求處理 運行概述 啟動引導(Bootstrapping) 路由和創(chuàng)建URL 請求(Requests) 響應(Responses) Sessions 和 Cookies 錯誤處理(Handling Errors) 日志(Logging) 關鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動加載(Autoloading) 服務定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數據庫工作 數據庫訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動記錄(Active Record) 數據庫遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數據 創(chuàng)建表單(Creating Forms) 輸入驗證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復合表單(Getting Data for Multiple Models) 顯示數據 格式化輸出數據(Data Formatting) 分頁(Pagination) 排序(Sorting) 數據提供器(Data Providers) 數據小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認證(Authentication) 授權(Authorization) 處理密碼(Working with Passwords) 客戶端認證(Auth Clients) 最佳安全實踐(Best Practices) 緩存 概述 數據緩存 片段緩存 頁面緩存 HTTP 緩存 RESTfull Web服務 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(Response Formatting) 授權認證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯誤處理(Error Handling) 開發(fā)工具 調試工具欄和調試器 使用Gii生成代碼 生成API文檔 測試 概述(Overview) 配置測試環(huán)境(Testing environment setup) 單元測試(Unit Tests) 功能測試(Function Tests) 驗收測試(Acceptance Tests) 測試夾具(Fixtures) 高級專題 高級應用模板 創(chuàng)建自定義應用程序結構 控制臺命令 核心驗證器(Core Validators) 國際化 收發(fā)郵件 性能優(yōu)化 共享主機環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
watak

別名(Aliases)

別名(Aliases)

別名用來表示文件路徑和 URL,這樣就避免了在代碼中硬編碼一些絕對路徑和 URL。一個別名必須以?@?字符開頭,以區(qū)別于傳統(tǒng)的文件路徑和 URL。Yii 預定義了大量可用的別名。例如,別名?@yii?指的是 Yii 框架本身的安裝目錄,而?@web?表示的是當前運行應用的根 URL。

定義別名

你可以調用 Yii::setAlias() 來給文件路徑或 URL 定義別名:

// 文件路徑的別名
Yii::setAlias('@foo', '/path/to/foo');

// URL 的別名
Yii::setAlias('@bar', 'http://www.example.com');

注意:別名所指向的文件路徑或 URL 不一定是真實存在的文件或資源。

可以通過在一個別名后面加斜杠?/?和一至多個路徑分段生成新別名(無需調用 Yii::setAlias())。我們把通過 Yii::setAlias() 定義的別名稱為根別名,而用他們衍生出去的別名成為衍生別名。例如,@foo?就是根別名,而?@foo/bar/file.php?是一個衍生別名。

你還可以用別名去定義新別名(根別名與衍生別名均可):

Yii::setAlias('@foobar', '@foo/bar');

根別名通常在引導階段定義。比如你可以在入口腳本里調用 Yii::setAlias()。為了方便起見,應用提供了一個名為?aliases?的可寫屬性,你可以在應用配置中設置它,就像這樣:

return [
    // ...
    'aliases' => [
        '@foo' => '/path/to/foo',
        '@bar' => 'http://www.example.com',
    ],
];

解析別名

你可以調用 Yii::getAlias() 命令來解析根別名到對應的文件路徑或 URL。同樣的頁面也可以用于解析衍生別名。例如:

echo Yii::getAlias('@foo');               // 輸出:/path/to/fooecho Yii::getAlias('@bar');               // 輸出:http://www.example.comecho Yii::getAlias('@foo/bar/file.php');  // 輸出:/path/to/foo/bar/file.php

由衍生別名所解析出的文件路徑和 URL 是通過替換掉衍生別名中的根別名部分得到的。

注意:Yii::getAlias() 并不檢查結果路徑/URL 所指向的資源是否真實存在。

根別名可能也會包含斜杠?/。Yii::getAlias() 足夠智能到判斷一個別名中的哪部分是根別名,因此能正確解析文件路徑/URL。例如:

Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
echo Yii::getAlias('@foo/test/file.php');  // 輸出:/path/to/foo/test/file.phpecho Yii::getAlias('@foo/bar/file.php');   // 輸出:/path2/bar/file.php

若?@foo/bar?未被定義為根別名,最后一行語句會顯示為?/path/to/foo/bar/file.php

使用別名

別名在 Yii 的很多地方都會被正確識別,無需調用 Yii::getAlias() 來把它們轉換為路徑/URL。例如,yii\caching\FileCache::cachePath 能同時接受文件路徑或是指向文件路徑的別名,因為通過?@?前綴能區(qū)分它們。

use yii\caching\FileCache;

$cache = new FileCache([
    'cachePath' => '@runtime/cache',
]);

請關注 API 文檔了解特定屬性或方法參數是否支持別名。

預定義的別名

Yii 預定義了一系列別名來簡化常用路徑和 URL 的使用:

  • @yii?-?BaseYii.php?文件所在的目錄(也被稱為框架安裝目錄)
  • @app?- 當前運行的應用 yii\base\Application::basePath
  • @runtime?- 當前運行的應用的 yii\base\Application::runtimePath
  • @vendor?- yii\base\Application::vendorPath
  • @webroot?- 當前運行應用的 Web 入口目錄
  • @web?- 當前運行應用的根 URL

@yii?別名是在入口腳本里包含?Yii.php?文件時定義的,其他的別名都是在配置應用的時候,于應用的構造方法內定義的。

擴展的別名

每一個通過 Composer 安裝的?擴展?都自動添加了一個別名。該別名會以該擴展在?composer.json?文件中所聲明的根命名空間為名,且他直接代指該包的根目錄。例如,如果你安裝有?yiisoft/yii2-jui?擴展,會自動得到?@yii/jui?別名,它定義于引導啟動階段:

Yii::setAlias('@yii/jui',?'VendorPath/yiisoft/yii2-jui');
Artikel sebelumnya: Artikel seterusnya: