天天看點

Yii 架構學習--02 進階

檔案位置: web/index.php

需要注意的是,如果想通過指令行方式(cli)通路應用,入口檔案是根目錄下的<code>yii</code>。裡面的内容實質是php代碼,與<code>config/web.php</code>類似。windows下請使用<code>yii.bat</code>。該檔案在linux下需要有執行權限,這樣使用者就能通過指令<code>./yii &lt;route&gt; [arguments] [options]</code> 來運作cli應用。

config/web.php

下面列出全部配置屬性,實際項目請選擇性配置。

使用配置:

gii是yii提供的代碼自動生成器,可以通過簡單的輸入生成<code>controller</code>、<code>model</code>、<code>view</code>等檔案代碼,并提供代碼預覽功能。

開啟gii需要将 <code>yii_env_dev</code> 設為 true:

由于gii 是 <code>yii</code> 中的一個子產品。可以通過配置應用的 <code>yii\base\application::modules</code> 屬性開啟它。通常來講在 <code>config/web.php</code> 檔案中會有以下配置代碼:

這段配置表明,如果目前是開發環境,應用會包含 gii 子產品,子產品類是 <code>yii\gii\module</code>。

預設使用的是<code>config/db.php</code>裡的資料庫配置。配置連接配接元件後yii裡可以使用以下文法通路:

同理,我們可以修改<code>config/web.php</code>:

定義多個資料庫連接配接配置。

model裡:

通過重寫 <code>yii\db\activerecord::getdb()</code> 方法切換資料庫連接配接:

<a href="http://www.yiichina.com/doc/guide/2.0/db-active-record">http://www.yiichina.com/doc/guide/2.0/db-active-record</a>

<code>activerecord</code> 提供了資料庫與模型(mvc 中的 m,model) 的互動,<code>querybuilder</code> 用于建立動态的查詢語句。

yii除了可以使用模型對象的方式(orm)操作資料庫外,還可以使用原生的sql語句。通過<code>yii\db\command::createcommand</code>可以執行sql語句。

查詢:

可以使用<code>insert</code>,<code>update</code>,<code>delete</code> 方法,這些方法會根據參數生成合适的sql并執行:

預處理語句

為安全傳遞查詢參數可以使用預處理語句,首先應當使用<code>:placeholder</code>占位,再将變量綁定到對應占位符:

修改<code>config/web.php</code>:

<a href="http://www.yiichina.com/doc/guide/2.0/db-dao">http://www.yiichina.com/doc/guide/2.0/db-dao</a>

很多資料庫支援資料庫複制 database replication來提高可用性和響應速度. 在資料庫複制中,資料總是從主伺服器 到 從伺服器. 所有的插入和更新等寫操作在主伺服器執行,而讀操作在從伺服器執行.

通過配置yii\db\connection可以實作資料庫複制和讀寫分離.

以上的配置實作了一主多從的結構,從伺服器用以執行讀查詢,主伺服器執行寫入查詢,讀寫分離的功能由背景代碼自動完成。調用者無須關心。

示例:建立一個utils類。該檔案可以在任何目錄,例如 <code>@app/components</code>。

我們在根目錄建立<code>components</code>檔案夾,并建立<code>components/utils.php</code>:

引入:

在應用程式入口檔案(index.php)處,在引入的 <code>yii.php</code> 檔案後面 添加以下代碼行,用 yii 自動加載器 來加載自定義類 代替架構的原始助手類:

未完待續。。。