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

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

集成第三方代碼

引入第三方代碼

有時(shí),你可能會(huì)需要在 Yii 應(yīng)用中使用第三方的代碼。又或者是你想要在第三方系統(tǒng)中把 Yii 作為類庫(kù)引用。在下面這個(gè)板塊中,我們向你展示如何實(shí)現(xiàn)這些目標(biāo)。

在 Yii 中使用第三方類庫(kù)

要想在 Yii 應(yīng)用中使用第三方類庫(kù),你主要需要確保這些庫(kù)中的類文件都可以被正常導(dǎo)入或可以被自動(dòng)加載。

使用 Composer 包

目前很多第三方的類庫(kù)都以?Composer?包的形式發(fā)布。你只需要以下兩個(gè)簡(jiǎn)單的步驟即可安裝他們:

  1. 修改你應(yīng)用的?composer.json?文件,并注明需要安裝哪些 Composer 包。
  2. 運(yùn)行?php composer.phar install?安裝這些包。

這些Composer 包內(nèi)的類庫(kù),可以通過(guò) Composer 的自動(dòng)加載器實(shí)現(xiàn)自動(dòng)加載。不過(guò)請(qǐng)確保你應(yīng)用的?入口腳本包含以下幾行用于加載 Composer 自動(dòng)加載器的代碼:

// install Composer autoloader (安裝 Composer 自動(dòng)加載器)require(__DIR__ . '/../vendor/autoload.php');

// include Yii class file (加載 Yii 的類文件)require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

使用下載的類庫(kù)

若你的類庫(kù)并未發(fā)布為一個(gè) Composer 包,你可以參考以下安裝說(shuō)明來(lái)安裝它。在大多數(shù)情況下,你需要預(yù)先下載一個(gè)發(fā)布文件,并把它解壓縮到?BasePath/vendor?目錄,這里的?BasePath?代指你應(yīng)用程序自身的?base path(主目錄)。

若該類庫(kù)包含他自己的類自動(dòng)加載器,你可以把它安裝到你應(yīng)用的入口腳本里。我們推薦你把它的安裝代碼置于?Yii.php?的導(dǎo)入之前,這樣 Yii 的官方自動(dòng)加載器可以擁有更高的優(yōu)先級(jí)。

若一個(gè)類庫(kù)并沒(méi)有提供自動(dòng)加載器,但是他的類庫(kù)命名方式符合?PSR-4?標(biāo)準(zhǔn),你可以使用 Yii 官方的自動(dòng)加載器來(lái)自動(dòng)加載這些類。你只需給他們的每個(gè)根命名空間聲明一下根路徑別名。比如,假設(shè)說(shuō)你已經(jīng)在目錄?vendor/foo/bar?里安裝了一個(gè)類庫(kù),且這些類庫(kù)的根命名空間為?xyz。你可以把以下代碼放入你的應(yīng)用配置文件中:

[
    'aliases' => [
        '@xyz' => '@vendor/foo/bar',
    ],
]

若以上情形都不符合,最可能是這些類庫(kù)需要依賴于 PHP 的 include_path 配置,來(lái)正確定位并導(dǎo)入類文件。只需參考它的安裝說(shuō)明簡(jiǎn)單地配置一下 PHP 導(dǎo)入路徑即可。

最悲催的情形是,該類庫(kù)需要顯式導(dǎo)入每個(gè)類文件,你可以使用以下方法按需導(dǎo)入相關(guān)類文件:

  • 找出該庫(kù)內(nèi)包含哪些類。
  • 在應(yīng)用的入口腳本里的?Yii::$classMap?數(shù)組中列出這些類,和他們各自對(duì)應(yīng)的文件路徑。

舉例來(lái)說(shuō),

Yii::$classMap['Class1'] = 'path/to/Class1.php';
Yii::$classMap['Class2'] = 'path/to/Class2.php';

在第三方系統(tǒng)內(nèi)使用 Yii

因?yàn)?Yii 提供了很多牛逼的功能,有時(shí),你可能會(huì)想要使用它們中的一些功能用來(lái)支持開發(fā)或完善某些第三方的系統(tǒng),比如:WordPress,Joomla,或是用其他 PHP 框架開發(fā)的應(yīng)用程序。舉兩個(gè)例子吧,你可能會(huì)想念方便的 yii\helpers\ArrayHelper 類,或在第三方系統(tǒng)中使用?Active Record?活動(dòng)記錄功能。要實(shí)現(xiàn)這些目標(biāo),你只需兩個(gè)步驟:安裝 Yii,啟動(dòng) Yii。

若這個(gè)第三方系統(tǒng)支持 Composer 管理他的依賴文件,你可以直接運(yùn)行一下命令來(lái)安裝 Yii:

php composer.phar require yiisoft/yii2-framework:*
php composer.phar install

不然的話,你可以下載?Yii 的發(fā)布包,并把它解壓到對(duì)應(yīng)系統(tǒng)的?BasePath/vendor?目錄內(nèi)。

之后,你需要修改該第三方應(yīng)用的入口腳本,在開頭位置添加 Yii 的引入代碼:

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

$yiiConfig = require(__DIR__ . '/../config/yii/web.php');
new yii\web\Application($yiiConfig); // 千萬(wàn)別在這調(diào)用 run() 方法。(笑)

如你所見(jiàn),這段代碼與典型的 Yii 應(yīng)用的入口腳本非常相似。唯一的不同之處在于在 Yii 應(yīng)用創(chuàng)建成功之后,并不會(huì)緊接著調(diào)用?run()?方法。因?yàn)椋?code style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 12.6px; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 4px; background-color: rgb(249, 242, 244);">run()?方法的調(diào)用會(huì)接管 HTTP 請(qǐng)求的處理流程。(譯注:換言之,這就不是第三方系統(tǒng)而是 Yii 系統(tǒng)了,URL 規(guī)則也會(huì)跟著換成 Yii 的規(guī)則了)

與 Yii 應(yīng)用中一樣,你可以依據(jù)運(yùn)行該第三方系統(tǒng)的環(huán)境,針對(duì)性地配置 Yii 應(yīng)用實(shí)例。比如,為了使用活動(dòng)記錄功能,你需要先用該第三方系統(tǒng)的 DB 連接信息,配置 Yii 的?db?應(yīng)用組件。

現(xiàn)在,你就可以使用 Yii 提供的絕大多數(shù)功能了。比如,創(chuàng)建 AR 類,并用它們來(lái)操作數(shù)據(jù)庫(kù)。

配合使用 Yii 2 和 Yii 1

如果你之前使用 Yii 1,大概你也有正在運(yùn)行的 Yii 1 應(yīng)用吧。不必用 Yii 2 重寫整個(gè)應(yīng)用,你也可以通過(guò)增添對(duì)哪些 Yii 2 獨(dú)占功能的支持來(lái)增強(qiáng)這個(gè)系統(tǒng)。下面我們就來(lái)詳細(xì)描述一下具體的實(shí)現(xiàn)過(guò)程。

注意:Yii 2 需要 PHP 5.4+ 的版本。你需要確保你的服務(wù)器以及現(xiàn)有應(yīng)用都可以支持 PHP 5.4。

首先,參考前文板塊中給出的方法,在已有的應(yīng)用中安裝 Yii 2。

之后,如下修改 Yii 1 應(yīng)用的入口腳步:

// 導(dǎo)入下面會(huì)詳細(xì)說(shuō)明的定制 Yii 類文件。require(__DIR__ . '/../components/Yii.php');

// Yii 2 應(yīng)用的配置文件$yii2Config = require(__DIR__ . '/../config/yii2/web.php');
new yii\web\Application($yii2Config); // Do NOT call run()

// Yii 1 應(yīng)用的配置文件$yii1Config = require(__DIR__ . '/../config/yii1/main.php');
Yii::createWebApplication($yii1Config)->run();

因?yàn)椋琘ii 1 和 Yii 2 都包含有?Yii?這個(gè)類,你應(yīng)該創(chuàng)建一個(gè)定制版的 Yii 來(lái)把他們組合起來(lái)。上面的代碼里包含了的這個(gè)定制版的?Yii類,可以用以下代碼創(chuàng)建出來(lái):

$yii2path = '/path/to/yii2';
require($yii2path . '/BaseYii.php'); // Yii 2.x

$yii1path = '/path/to/yii1';
require($yii1path . '/YiiBase.php'); // Yii 1.x

class Yii extends \yii\BaseYii{
    // 復(fù)制粘貼 YiiBase (1.x) 文件中的代碼于此
}

Yii::$classMap = include($yii2path . '/classes.php');

// 通過(guò) Yii 1 注冊(cè) Yii2 的類自動(dòng)加載器
Yii::registerAutoloader(['Yii', 'autoload']);

大功告成!此時(shí),你可以在你代碼的任意位置,調(diào)用?Yii::$app?以訪問(wèn) Yii 2 的應(yīng)用實(shí)例,而用?Yii::app()?則會(huì)返回 Yii 1 的應(yīng)用實(shí)例:

echo?get_class(Yii::app());?//?輸出?'CWebApplication'echo?get_class(Yii::$app);? //?輸出?'yii\web\Application'
前の記事: 次の記事: