簡體   English   中英

Zend Framework 1-在模塊外部動態加載模型

[英]Zend Framework 1 - dynamically loading model outside of module

我正在開發基於Zend Framework 1.12的API,並已通過使用模塊(v1,v2)實現了版本控制,每個模塊都是API的不同版本,盡管這可能不是最佳實踐。

我有以下目錄結構:

application
    modules
        v1
            controllers
            models
        v2
            controllers
            models
library
    Myapp
        controller
            plugin
                TranslateHandler.php
    Zend
public

我有一個自定義的插件Myapp_Controller_Plugin_TranslateHandler.php,在Bootstrap中調用該插件,以設置默認語言或用戶通過身份驗證時的首選語言。

這是我在TranslateHandler中查找用戶的代碼:

$users = new V1_Model_UsersMapper();
$users->findByAuthToken($auth_token, $usersModel = new V1_Model_Users());

問題是我為每個模塊都有一個名為V1_Model_UsersV2_Model_Users的模型。

我可以檢查通過Request對象設置的模塊。 我可以執行以下操作:

$module = $frontController->getRequest()->getModuleName();
if($module == 'v1')
{
    //use V1_Model_Users
}
elseif($module == 'v2')
{
    //use V2_Model_Users
}

但是,我想避免在代碼中對模塊名稱進行硬編碼。 理想情況下,我想在TranslateHandler插件中動態加載*_Model_Users

tl; dr是否可以通過知道模塊名稱在模塊外部動態加載類?

謝謝,

您可以嘗試如下操作:

$module = $frontController->getRequest()->getModuleName();
$module_class = ucfirst($module) . "_Model_Users";
$usersModel  = new $module_class();

暫無
暫無

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

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