溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Yii2 HOW-TO(2):最佳實踐(1)

發(fā)布時間:2020-06-05 06:16:09 來源:網(wǎng)絡 閱讀:568 作者:googlingman 欄目:web開發(fā)

Yii2 HOW-TO(2):最佳實踐(1)

控制器編程最佳實踐

在設計良好的應用中,控制器很精練,包含的操作代碼簡短; 如果你的控制器很復雜,通常意味著需要重構, 轉移一些代碼到其他類中。

  • 可訪問 請求 數(shù)據(jù);
  • 可根據(jù)請求數(shù)據(jù)調(diào)用 模型 的方法和其他服務組件;
  • 可使用 視圖 構造響應;
  • 不應處理應被模型處理的請求數(shù)據(jù);
  • 應避免嵌入HTML或其他展示代碼,這些代碼最好在 視圖中處理。

模型編程最佳實踐

模型是 MVC 模式中的一部分, 是代表業(yè)務數(shù)據(jù)、規(guī)則和邏輯的對象。
模型是代表業(yè)務數(shù)據(jù)、規(guī)則和邏輯的中心地方,通常在很多地方重用, 在一個設計良好的應用中,模型通常比 控制器代碼多。

歸納起來,模型:

  • 可包含屬性來展示業(yè)務數(shù)據(jù);
  • 可包含驗證規(guī)則確保數(shù)據(jù)有效和完整;
  • 可包含方法實現(xiàn)業(yè)務邏輯;
  • 不應直接訪問請求,session和其他環(huán)境數(shù)據(jù), 這些數(shù)據(jù)應該由控制器傳入到模型;
  • 應避免嵌入HTML或其他展示代碼,這些代碼最好在 視圖中處理;
  • 單個模型中避免太多的場景。
    在開發(fā)大型復雜系統(tǒng)時應經(jīng)??紤]最后一條建議, 在這些系統(tǒng)中,模型會很大并在很多地方使用,因此會包含需要規(guī)則集和業(yè)務邏輯, 最后維護這些模型代碼成為一個噩夢, 因為一個簡單修改會影響好多地方, 為確保模型好維護,最好使用以下策略:

定義可被多個應用主體 或 模塊 共享的模型基類集合。 這些模型類應包含通用的最小規(guī)則集合和邏輯。
在每個使用模型的 應用主體 或 模塊中,通過繼承對應的模型基類來定義具體的模型類, 具體模型類包含應用主體或模塊指定的規(guī)則和邏輯。
例如,在高級應用模板, 你可以定義一個模型基類common\models\Post, 然后在前臺應用中,定義并使用一個繼承common\models\Post的具體模型類frontend\models\Post, 在后臺應用中可以類似地定義backend\models\Post。 通過這種策略,你清楚frontend\models\Post只對應前臺應用,如果你修改它, 就無需擔憂修改會影響后臺應用。

視圖編程最佳實踐

視圖是 MVC 模式中的一部分。 它是展示數(shù)據(jù)到終端用戶的代碼,在網(wǎng)頁應用中, 根據(jù)視圖模板來創(chuàng)建視圖,視圖模板為PHP腳本文件, 主要包含HTML代碼和展示類PHP代碼,通過view應用組件來管理, 該組件主要提供通用方法幫助視圖構造和渲染, 簡單起見,我們稱視圖模板或視圖模板文件為視圖。
視圖負責將模型的數(shù)據(jù)展示用戶想要的格式,總之,視圖:

  • 應主要包含展示代碼,如HTML, 和簡單的PHP代碼來控制、格式化和渲染數(shù)據(jù);
  • 不應包含執(zhí)行數(shù)據(jù)查詢代碼,這種代碼放在模型中;
  • 應避免直接訪問請求數(shù)據(jù),如 $_GET, $_POST,這種應在控制器中執(zhí)行, 如果需要請求數(shù)據(jù),應由控制器推送到視圖。
  • 可讀取模型屬性,但不應修改它們。
  • 為使模型更易于維護,避免創(chuàng)建太復雜或包含太多冗余代碼的視圖, 可遵循以下方法達到這個目標:
  • 使用 布局 來展示公共代碼(如,頁面頭部、尾部);
  • 將復雜的視圖分成幾個小視圖,可使用上面描述的渲染方法將這些 小視圖渲染并組裝成大視圖;
  • 創(chuàng)建并使用 小部件 作為視圖的數(shù)據(jù)塊;
  • 創(chuàng)建并使用助手類在視圖中轉換和格式化數(shù)據(jù)。
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI