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

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

類自動加載(Autoloading)

類自動加載(Autoloading)

Yii 依靠類自動加載機制來定位和包含所需的類文件。它提供一個高性能且完美支持PSR-4 標(biāo)準(zhǔn)(中文漢化)的自動加載器。該自動加載器會在引入框架文件?Yii.php?時安裝好。

注意:為了簡化敘述,本篇文檔中我們只會提及類的自動加載。不過,要記得文中的描述同樣也適用于接口和Trait(特質(zhì))的自動加載哦。

使用 Yii 自動加載器

要使用 Yii 的類自動加載器,你需要在創(chuàng)建和命名類的時候遵循兩個簡單的規(guī)則:

  • 每個類都必須置于命名空間之下 (比如?foo\bar\MyClass)。
  • 每個類都必須保存為單獨文件,且其完整路徑能用以下算法取得:
// $className 是一個開頭包含反斜杠的完整類名(譯注:請自行谷歌:fully qualified class name)$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php');

舉例來說,若某個類名為?foo\bar\MyClass,對應(yīng)類的文件路徑別名會是?@foo/bar/MyClass.php。為了讓該別名能被正確解析為文件路徑,@foo?或?@foo/bar?中的一個必須是根別名。

當(dāng)我們使用基本應(yīng)用模版時,可以把你的類放置在頂級命名空間?app?下,這樣它們就可以被 Yii 自動加載,而無需定義一個新的別名。這是因為?@app?本身是一個預(yù)定義別名,且類似于?app\components\MyClass?這樣的類名,基于我們剛才所提到的算法,可以正確解析出AppBasePath/components/MyClass.php?路徑。

在高級應(yīng)用模版里,每一邏輯層級會使用他自己的根別名。比如,前端層會使用?@frontend?而后端層會使用?@backend。因此,你可以把前端的類放在?frontend?命名空間,而后端的類放在?backend。 這樣這些類就可以被 Yii 自動加載了。

類映射表(Class Map)

Yii 類自動加載器支持類映射表功能,該功能會建立一個從類的名字到類文件路徑的映射。當(dāng)自動加載器加載一個文件時,他首先檢查映射表里有沒有該類。如果有,對應(yīng)的文件路徑就直接加載了,省掉了進一步的檢查。這讓類的自動加載變得超級快。事實上所有的 Yii 核心類都是這樣加載的。

你可以用?Yii::$classMap?方法向映射表中添加類,

Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php';

別名可以被用于指定類文件的路徑。你應(yīng)該在引導(dǎo)啟動的過程中設(shè)置類映射表,這樣映射表就可以在你使用具體類之前就準(zhǔn)備好。

用其他自動加載器

因為 Yii 完全支持 Composer 管理依賴包,所以推薦你也同時安裝 Composer 的自動加載器,如果你用了一些自帶自動加載器的第三方類庫,你應(yīng)該也安裝下它們。

當(dāng)你同時使用其他自動加載器和 Yii 自動加載器時,應(yīng)該在其他自動加載器安裝成功之后,再包含?Yii.php?文件。這將使 Yii 成為第一個響應(yīng)任何類自動加載請求的自動加載器。舉例來說,以下代碼提取自基本應(yīng)用模版的入口腳本?。第一行安裝了 Composer 的自動加載器,第二行才是 Yii 的自動加載器:

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

你也可以只使用 Composer 的自動加載,而不用 Yii 的自動加載。不過這樣做的話,類的加載效率會下降,且你必須遵循 Composer 所設(shè)定的規(guī)則,從而讓你的類滿足可以被自動加載的要求。

補充:若你不想要使用 Yii 的自動加載器,你必須創(chuàng)建一個你自己版本的?Yii.php?文件,并把它包含進你的入口腳本里。

自動加載擴展類

Yii 自動加載器支持自動加載擴展的類。唯一的要求是它需要在?composer.json?文件里正確地定義?autoload?部分。請參考?Composer 文檔(英文)(中文漢化),來了解如何正確描述?autoload?的更多細(xì)節(jié)。

在你不使用 Yii 的自動加載器時,Composer 的自動加載器仍然可以幫你自動加載擴展內(nèi)的類。
上一篇: 下一篇: