在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