2016-09-23 28 views
-1

PHPクラスでは、各関数で呼び出す必要のないグローバル変数を設定する方法はありますか?PHP:クラス内にグローバル変数を設定する

例えば、私は、値の配列を含んでい$settingsという変数を持っている:

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

get_option()機能は、ワードプレスから来ています。 $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()に二回以下の行を呼び出す:2つの異なる機能に二回、この変数を呼び出す代わり

$settings = get_option('my_options'); 

私のクラスのさまざまな機能の中で使用できる同じ変数を呼び出す正しい方法は何ですか?私はちょうどclass My_Class下に$settings変数機能を追加しようとしたが、それはうまくいきませんでした:

class My_Class { 

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

答えて

1

あなたは__construct

$this->settings = get_option('my_options'); 
の内側に続いて、クラスプロパティとして

protected $settings; 

を$の設定を宣言することができます

これで、クラス内のどこにでもアクセスできます。$this->settings

の詳細について
public function function_1() { 
    echo 'This option is ' . $this->settings['option_1']; 
} 

、あなたはPHPのマニュアルを参照することができますhttp://php.net/manual/en/language.oop5.properties.php

関連する問題