在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' );
不是在两个不同的函数中调用这个变量两次,调用可以在我的类的不同函数中使用的相同变量的正确方法是什么?我尝试在$settings
下方添加class My_Class
变量函数,但这不起作用:
class My_Class {
global $settings = get_option( 'my_options' );
# Rest of the code below...
答案 0 :(得分:2)
您可以将$ settings声明为类属性
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