簡體   English   中英

在 PHP MVC 中,將控制器數據傳遞給模型類的正確方法是什么?

[英]In a PHP MVC, what's the correct way of passing controller data to model classes?

在我目前正在開發的 PHP MVC 中,基本控制器檢查用戶是否已登錄,如果是,則更新其屬性(請參閱代碼)。

由於這些屬性用於模型類的各種方法,我想將它們從基本控制器傳遞到(基本)模型。 這樣做的正確方法是什么?

class Controller {

     protected $user_logged_in = false;
     protected $logged_in_user_id = null;

     function __construct() {
         if(isset($_SESSION['user_id'])) {
              $this->user_logged_in = true;
              $this->logged_in_user_id = $_SESSION['user_id'];
         }
     }
 }

我是這樣做的:模型的構造函數接受一個身份驗證類。 這個請求是通過自動裝配/自動依賴注入來實現的。 我的注入器被編程為在任何需要它的地方傳遞身份驗證類的相同實例,因此沒有差異(即,身份驗證類是“共享的”)。

通過這種方式,您實際上並沒有將數據從控制器傳遞到模型層中的類。 相反,模型層中的類/服務可以通過注入依賴項直接訪問它需要的類。

我從這個視頻中學到了技術,值得一看到底。 以上只是我的實現方法的一個片段,但是有一些教程和庫可用於自動裝配,它們可能以不同的方式實現。 嘗試搜索“php 自動裝配”或“php 自動依賴注入”。

另一種做你想做的事情的方法是向你的控制器中使用的服務添加一個參數。 您的控制器應該可以訪問模型層,因此調用添加參數函數應該沒什么大不了的。

暫無
暫無

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

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