PHP:在类中设置全局变量


PHP: set a global variable in a class

在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...

你可以声明$settings为一个类属性

protected $settings;

Then inside __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