yii2 model原始碼解讀

2022-09-16 17:36:10 字數 1281 閱讀 7600

模型主要實現了驗證規則和驗證器確保輸入的資料是安全和正確的.

模型的流程:

模型實現了迭代器和陣列訪問介面,所以可以像下面這樣使用:

$user = new user();

$user["name"] = "sss"

foreach( $user as $key=>$value)

常用於規則中,場景的預設值為:default.可以在控制器中不同的動作裡例項化模型,賦值不同的場景.這樣驗證規則就會基於此模型的場景進行判斷.

$user = new user();

$user->scenario = "login"..登入場景

其中 attributelist(特性列表) 是需要通過此規則驗證的特性列表字串,每個特性名字由逗號分隔; validator(驗證器) 指定要執行驗證的種類;on 引數是可選的,它指定此規則應被應用到的場景列表; 附加選項是乙個名值對陣列,用於初始化相應驗證器的屬性值。

[

['attribute1', 'attribute2'],

'validator type',

'on' => ['scenario1', 'scenario2'],

...other parameters...

]

規則的第二個屬性就是驗證器,驗證器有三種型別:

第一, validator 可以是模型類中乙個方法的名字

第二,validator 可以是乙個驗證器類的名字,當此規則被應用時, 乙個驗證器類的例項將被建立以執行實際驗證。規則中的附加選項用於初始化例項的屬性值。

第三,validator 可以是乙個預定義的驗證器類的別名。詳情見validator目錄下

某個特性位於乙個場景中則代表是安全的.保證所有的特性都被驗證過..如果乙個特性未屬於任何乙個場景時,在使用load或者setattributes的時候會丟擲異常

請記住,驗證規則是用於檢查使用者輸入的資料,而不是檢查我們在**中生成的資料(例如時間戳,自動產生的主鍵)。 因此,不要 為那些不接受終端使用者輸入的特性新增驗證規則。

那對於我們自己生成的資料或者乙個特性,即使不用為它指定任何規則,就可以使用safe驗證器了,將不會經過驗證

當設計表單時,我們通常需要為每個表單域顯示乙個標籤。 標籤告訴使用者他應該在此表單域中填寫什麼樣的資訊。雖然我們可以在檢視中硬編碼乙個標籤, 但如果我們在相應的模型中指定(標籤),則會更加靈活方便

可以在model中使用attributelabels方法覆蓋父類設定模型標籤..然後使用getattributelabel獲取某乙個特性的標籤名

Yii原始碼解讀 別名

設定別名的目的 特殊的變數常量 yii baseyii aliases儲存整個yii應用的所有別名。webroot web最後乙個藏有別名的地方 verdor yiisoft extensions.phpyii aliases來儲存別名 yii setalias alias path 來定義別名。這...

Yii原始碼解讀 類自動載入

yii的類自動載入,依賴於php的spl autoload register 註冊乙個自己的自動載入函式 autoloader 並插入到自動載入函式棧的最前面,確保yii的autoloader會被最先呼叫。require dir vendor autoload.php require dir ven...

CYYMysql 原始碼解讀 2

執行緒同步類 lock.h檔案和lock.cpp檔案實現比較簡單,使用的是臨界區,臨界區是使用者態的執行緒間切換消耗不是很大,而事件核心物件 訊號量 互斥量都是核心態的,呼叫的時候會切換到核心態,所以盡量使用臨界區來同步執行緒間操作。詳細資訊可以檢視windows核心程式設計,上面講解的很詳細。pr...