2010-04-09 57 views
3

我正在寫我的控制器的功能;這應該採取的形式,處理它,在DB註冊用戶,發送確認電子郵件等等向控制器添加功能時的MVC最佳實踐?

爲了避免這個功能太混亂,我正在考慮調用一些子功能(例如:

function registration() 
{ 
    //process form.. 

    _insertInDb($formdata) 

    _send_mail($address); 

    //load confirmation view.. 
} 

function _send_mail($to) 
{ 
    //code here 
} 

function _insertInDb($formdata) 
{ 
    //other code here... 
} 

我不是在另一個文件中把握是否寫所有的功能在控制器將是最好的做法 - 也許應插入所有「配套」的功能(例如send_mail和insertInDb在這個例子中),然後將它們導入?

這可能會使控制器更具可讀性。 您的觀點是什麼?

回答

2

MVC只是一種表示模式,所有「業務邏輯」應該位於「MVC」代碼之外。你的應用程序應該完全相同的所有MVC代碼消失,並用其他東西代替。

我會成爲一個單獨的類,並有控制器調用這個類,這將作出必要的DB插入的一個實例,發送電子郵件提醒,做記錄等

更新

因爲笨似乎是基於CMS一個PHP,我建議你從這裏深入細節 - http://php.net/manual/en/language.oop5.php

這樣的代碼應該讓你的移動方向是正確的:

<?php 
class SimpleClass 
{ 
    // property declaration 
    public $var = 'a default value'; 

    // method declaration 
    public function displayVar() { 
     echo $this->var; 
    } 
} 
?> 
+0

好了,現在我只需要弄清楚如何創建和調用codeigniter..any建議一個新的類? :) – Patrick 2010-04-09 15:55:11

+0

看更新..... – Nate 2010-04-09 20:20:01

1

我承擔您將使用apt圖層來處理註冊過程中的每一步。

  1. 過程用戶請求
  2. 驗證並註冊
  3. 發出一個確認通知成功完成。

從控制器:


  1. 的ProcessRequest() - 變換用戶形式進入用戶實體是在由業務層可理解(比如說UserService)
  2. Registeruser() - 發生在用戶通過ProcessRequest()返回的實體並將其發送到UserService()
  3. 基於UserService(),SendNotification()進程的進一步通知

從業務層:(UserService)


  1. RegisterUser() - 內部調用它自己的方法 '的ValidateUser()',以驗證用戶信息
  2. 如果它成功了,它要求DataAccessLayer(比方說UserDAL)將其保存到數據庫
  3. 如果沒有,則會發送錯誤,具體取決於失敗原因。

我保證它提供了您所期望的。糾正我,如果我錯了..

歡迎與問候......