我有一個資料庫,其中包含我站點的多個基本配置設定。這個想法是從資料庫中提取值,然后使這些值可以全域訪問。我還想實施$this->cachePage(DAY);以確保站點不會不斷要求配置設定。
這是mysql表

我已將以下代碼放入public function initControllerBaseController 的方法中:
$global_app_settings = array();
$this->AppSettingModel = new \App\Models\AppSettingModel;
$app_settings = $this->AppSettingModel->getAppSettings();
foreach ($app_settings as $row) {
$global_app_settings[$row->app_setting_key] = $row->app_setting_value;
}
上面的代碼作業正常。如果我列印到螢屏上,它會產生以下內容;
Array
(
[dh_company_name] => A Big Company
[dh_phone_number] => 81-3-5555-5555
[dh_fax_number] => 81-3-5555-5556
)
我的問題如下;
- 如何使陣列在我的應用程式中全域可用?
- 我在哪里可以添加這個?
$this->cachePage(DAY);
uj5u.com熱心網友回復:
其實很簡單。
public function loadGlobalSettings()
{
$globalSettings = cache('global_settings');
if (null === $globalSettings) {
$appSettingModel = model('\App\Models\AppSettingModel');
$app_settings = $appSettingModel->getAppSettings();
$globalSettings = [];
foreach ($app_settings as $row) {
$globalSettings[$row->app_setting_key] = $row->app_setting_value;
}
cache()->save('global_settings', $globalSettings, DAY*15);
}
return $globalSettings;
}
它是如何運行的:
- 嘗試從快取中獲取。
- 如果快取不存在(回傳 null),加載模型,獲取設定,然后快取它。
- 回傳設定陣列。
玩得開心!
uj5u.com熱心網友回復:
在BaseController類中定義一個受保護的變數并將其設定在initController
把它放在你的控制器中
public function __construct()
{
this->cachePage(15);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397974.html
