[英]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_Users
和V2_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.