簡體   English   中英

PHP MVC-了解適當的控制器和模型角色

[英]PHP MVC - understanding appropriate controller and model roles

我最近一直在使用Codeigniter框架開發Web應用程序,還與Opencart一起工作了幾年。 我已經閱讀了PHP中的MVC實現,並且了解到在各種PHP MVC框架中應用的MVC模式的純度或正確性方面存在很多分歧。 我想問一個比較有經驗的家伙,什么是處理以下情況的“更正確”的方法。

我有一個包含任意數據的數據庫,例如table_1table_2,。 table_3各自具有略有不同的架構。

我努力使我的SQL查詢盡可能通用,因此我使用如下變量:

SELECT * FROM '.$sTable.' WHERE '.$sUserRefCol.' = 123

我還將每個表的特定信息存儲在配置數組中,例如

$config['db_map'][1] = array(
    'table' = 'table_1',
    'user_ref' = 'seller_id',
    'cols' = array(...)
);

因此,基於用戶輸入(POST參數),我得到了特定部分的數據庫變量。 我不確定是否應該在控制器中發生這種“映射”,還是可以在模型中完成。

現在,我在控制器中執行此操作,例如:

$section = $_POST['id'];
$db_map = $config['db_map'][$section];
$sTable = $db_map['table'];
$sUserRefCol = $db_map['user_ref'];
...

然后將所有這些傳遞給模型方法,例如:

$this->my_model->get_data($section, $sTable, $sUserRefCol);

因此,我的問題是:是否可以將$ section id傳遞給模型,並讓它處理配置的加載?

另一個例子,而不是POST參數,假設我們有一個與用戶部分或部門或訪問權限等有關的會話變量。

我應該在控制器中讀取這些值,然后使用適當的參數調用適當的模型方法嗎? 或者我可以直接撥打

$this->my_model->my_smart_method();

那將讀取會話變量並執行適當的操作?

您的控制器應該對數據庫一無所知。 它只是從模型中請求數據。 例如,是否可以從用戶模型中請求用戶列表。 它唯一知道的是它需要一個用戶列表。 該列表的存儲位置和存儲方式是模型的問題。 用戶列表可以在數據庫中,在其他網站上,在平面文件中,等等。 模型是廚房。 控制器不知道在哪里買的雞,如何准備的,等等。。。它只是點了一只雞就得到了一只雞。

好,謝謝您的簡短提問。 首先,讓我澄清一件事,控制器不與數據庫或表進行交互,即使他們不知道要使用的表等。控制器所知道的只是其相對模型。 我想,如果您深入學習,它將消除您的所有困惑。 我發現並閱讀了一篇有關MVC模式的出色文章,該文章非常出色,這是鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM