假設擷取網站的配置
private function _getSettings(){ //static $_settings; $cache=Yii::$app->cache; $settings=$cache->get('settings'); if(!$settings){ //擷取並設定setting } return $settings;}
這種情況下,是否應該設定一個靜態變數?什麼情況下最適合使用靜態變數呢?
回複內容:
假設擷取網站的配置
private function _getSettings(){ //static $_settings; $cache=Yii::$app->cache; $settings=$cache->get('settings'); if(!$settings){ //擷取並設定setting } return $settings;}
這種情況下,是否應該設定一個靜態變數?什麼情況下最適合使用靜態變數呢?
class .... { // 如果參數不多 // 或者寫到別的檔案裡 // 其他地方共用也好用,不容易打錯 const SETTING_SOME = 'somePerporty'; // 參數多其實應該用資料庫了 private function _getSettings() { //static $_settings; $cache=Yii::$app->cache; $settings=$cache->get({CLASSNAME}::SETTING_SOME); if(!$settings){ //擷取並設定setting } return $settings; }}
個人覺得你這裡不需要使用靜態變數,
如果在函數裡使用了static就屬於靜態局部變數,他是指每次執行這函數時那個值還在,函數外部是不能使用的。
你這裡每次執行需要去更新這個Cache,所以沒必要保留這個值。
注意靜態變數要和全域變數區分開來。
static $s_var;global $g_var;