<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 引入第三方代碼 有時,你可能會需要在 Yii 應用中使用第三方的代碼。又或者是你想要在第三方系統中把 Yii 作為類庫引用。在下面這個板塊中,我們向你展示如何實現這些目標。 ## 在 Yii 中使用第三方類庫 要想在 Yii 應用中使用第三方類庫,你主要需要確保這些庫中的類文件都可以被正常導入或可以被自動加載。 ### 使用 Composer 包 目前很多第三方的類庫都以?[Composer](https://getcomposer.org/)?包的形式發布。你只需要以下兩個簡單的步驟即可安裝他們: 1. 修改你應用的?`composer.json`?文件,并注明需要安裝哪些 Composer 包。 2. 運行?`php composer.phar install`?安裝這些包。 這些Composer 包內的類庫,可以通過 Composer 的自動加載器實現自動加載。不過請確保你應用的?[入口腳本](http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts)包含以下幾行用于加載 Composer 自動加載器的代碼: ~~~ // install Composer autoloader (安裝 Composer 自動加載器) require(__DIR__ . '/../vendor/autoload.php'); // include Yii class file (加載 Yii 的類文件) require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ~~~ ### 使用下載的類庫 若你的類庫并未發布為一個 Composer 包,你可以參考以下安裝說明來安裝它。在大多數情況下,你需要預先下載一個發布文件,并把它解壓縮到?`BasePath/vendor`?目錄,這里的?`BasePath`?代指你應用程序自身的?[base path(主目錄)](http://www.yiichina.com/doc/guide/2.0/structure-applications#basePath)。 若該類庫包含他自己的類自動加載器,你可以把它安裝到你應用的[入口腳本](http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts)里。我們推薦你把它的安裝代碼置于?`Yii.php`?的導入之前,這樣 Yii 的官方自動加載器可以擁有更高的優先級。 若一個類庫并沒有提供自動加載器,但是他的類庫命名方式符合?[PSR-4](http://www.php-fig.org/psr/psr-4/)?標準,你可以使用 Yii 官方的自動加載器來自動加載這些類。你只需給他們的每個根命名空間聲明一下[根路徑別名](http://www.yiichina.com/doc/guide/2.0/concept-aliases#defining-aliases)。比如,假設說你已經在目錄?`vendor/foo/bar`?里安裝了一個類庫,且這些類庫的根命名空間為?`xyz`。你可以把以下代碼放入你的應用配置文件中: ~~~ [ 'aliases' => [ '@xyz' => '@vendor/foo/bar', ], ] ~~~ 若以上情形都不符合,最可能是這些類庫需要依賴于 PHP 的 include_path 配置,來正確定位并導入類文件。只需參考它的安裝說明簡單地配置一下 PHP 導入路徑即可。 最悲催的情形是,該類庫需要顯式導入每個類文件,你可以使用以下方法按需導入相關類文件: * 找出該庫內包含哪些類。 * 在應用的[入口腳本](http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts)里的?`Yii::$classMap`?數組中列出這些類,和他們各自對應的文件路徑。 舉例來說, ~~~ Yii::$classMap['Class1'] = 'path/to/Class1.php'; Yii::$classMap['Class2'] = 'path/to/Class2.php'; ~~~ ## 在第三方系統內使用 Yii 因為 Yii 提供了很多牛逼的功能,有時,你可能會想要使用它們中的一些功能用來支持開發或完善某些第三方的系統,比如:WordPress,Joomla,或是用其他 PHP 框架開發的應用程序。舉兩個例子吧,你可能會想念方便的 yii\helpers\ArrayHelper 類,或在第三方系統中使用?[Active Record](http://www.yiichina.com/doc/guide/2.0/db-active-record)?活動記錄功能。要實現這些目標,你只需兩個步驟:安裝 Yii,啟動 Yii。 若這個第三方系統支持 Composer 管理他的依賴文件,你可以直接運行一下命令來安裝 Yii: ~~~ php composer.phar require yiisoft/yii2-framework:* php composer.phar install ~~~ 不然的話,你可以[下載](http://www.yiiframework.com/download/)?Yii 的發布包,并把它解壓到對應系統的?`BasePath/vendor`?目錄內。 之后,你需要修改該第三方應用的入口腳本,在開頭位置添加 Yii 的引入代碼: ~~~ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $yiiConfig = require(__DIR__ . '/../config/yii/web.php'); new yii\web\Application($yiiConfig); // 千萬別在這調用 run() 方法。(笑) ~~~ 如你所見,這段代碼與典型的 Yii 應用的[入口腳本](http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts)非常相似。唯一的不同之處在于在 Yii 應用創建成功之后,并不會緊接著調用?`run()`方法。因為,`run()`?方法的調用會接管 HTTP 請求的處理流程。(譯注:換言之,這就不是第三方系統而是 Yii 系統了,URL 規則也會跟著換成 Yii 的規則了) 與 Yii 應用中一樣,你可以依據運行該第三方系統的環境,針對性地配置 Yii 應用實例。比如,為了使用[活動記錄](http://www.yiichina.com/doc/guide/2.0/db-active-record)功能,你需要先用該第三方系統的 DB 連接信息,配置 Yii 的?`db`?應用組件。 現在,你就可以使用 Yii 提供的絕大多數功能了。比如,創建 AR 類,并用它們來操作數據庫。 ## 配合使用 Yii 2 和 Yii 1 如果你之前使用 Yii 1,大概你也有正在運行的 Yii 1 應用吧。不必用 Yii 2 重寫整個應用,你也可以通過增添對哪些 Yii 2 獨占功能的支持來增強這個系統。下面我們就來詳細描述一下具體的實現過程。 > 注意:Yii 2 需要 PHP 5.4+ 的版本。你需要確保你的服務器以及現有應用都可以支持 PHP 5.4。 首先,參考前文板塊中給出的方法,在已有的應用中安裝 Yii 2。 之后,如下修改 Yii 1 應用的入口腳步: ~~~ // 導入下面會詳細說明的定制 Yii 類文件。 require(__DIR__ . '/../components/Yii.php'); // Yii 2 應用的配置文件 $yii2Config = require(__DIR__ . '/../config/yii2/web.php'); new yii\web\Application($yii2Config); // Do NOT call run() // Yii 1 應用的配置文件 $yii1Config = require(__DIR__ . '/../config/yii1/main.php'); Yii::createWebApplication($yii1Config)->run(); ~~~ 因為,Yii 1 和 Yii 2 都包含有?`Yii`?這個類,你應該創建一個定制版的 Yii 來把他們組合起來。上面的代碼里包含了的這個定制版的`Yii`?類,可以用以下代碼創建出來: ~~~ $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 { // 復制粘貼 YiiBase (1.x) 文件中的代碼于此 } Yii::$classMap = include($yii2path . '/classes.php'); // 通過 Yii 1 注冊 Yii2 的類自動加載器 Yii::registerAutoloader(['Yii', 'autoload']); ~~~ 大功告成!此時,你可以在你代碼的任意位置,調用?`Yii::$app`?以訪問 Yii 2 的應用實例,而用?`Yii::app()`?則會返回 Yii 1 的應用實例: ~~~ echo get_class(Yii::app()); // 輸出 'CWebApplication' echo get_class(Yii::$app); // 輸出 'yii\web\Application' ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看