2016-09-23 273 views
-1

在一個PHP類中,有沒有一種方法可以設置一個全局變量,而不需要在每個函數中調用?PHP:在一個類中設置一個全局變量

例如,我有一個名爲$settings變量包含值的數組:

Array([option_1] => on, [option_2] => on, [option_3] => off) 

get_option()函數來自WordPress的。在$settings數組中的值決定執行其功能:

class My_Class { 

    public function __construct() { 
     # Get array of options 
     $settings = get_option('my_options'); 

     if (is_array($settings) || is_object($settings)) { 
      if ($settings['option_1'] == 'on') { 
       add_action('tag_1', array($this, 'function_1')); 
      } 

      if ($settings['option_2'] == 'on') { 
       add_action('tag_2', array($this, 'function_2')); 
      } 
     } 
    } 

    public function function_1() { 
     # Call the array of options again 
     $settings = get_option('my_options'); 

     echo 'This option is ' . $settings['option_1']; 
    } 

    public function function_2() { 
     # Code here... 
    } 

new My_Class(); 

不過,我所說的下面一行兩次在我__construct()function_1()

$settings = get_option('my_options'); 

這與其說是可變的兩次在兩個不同的功能,調用可以在我的課程的不同功能中使用的相同變量的正確方法是什麼?我嘗試添加只是class My_Class$settings可變功能,但沒有奏效:

class My_Class { 

    global $settings = get_option('my_options'); 
    # Rest of the code below... 

回答

1

你可以聲明$設置爲一個類屬性

protected $settings; 

然後裏面__construct

$this->settings = get_option('my_options'); 

然後,您可以在課堂內的任何地方使用$this->settings

public function function_1() { 
    echo 'This option is ' . $this->settings['option_1']; 
} 

有關properties更多的細節,你可以參考PHP文檔http://php.net/manual/en/language.oop5.properties.php