2016-09-23 60 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

相关问题