2016-09-23 2 views
-1

In einer PHP-Klasse gibt es eine Möglichkeit, eine globale Variable festzulegen, die nicht in jeder Funktion aufgerufen werden muss?PHP: Setze eine globale Variable in einer Klasse

Zum Beispiel habe ich eine Variable namens $settings die ein Array von Werten enthält:

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

get_option() Die Funktion von Word kommt. Die Werte in der $settings Array bestimmen, welche Funktionen auszuführen:

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(); 

jedoch nenne ich die folgende Zeile zweimal in meinem __construct() und function_1():

$settings = get_option('my_options'); 

Statt diese Variable zweimal in zwei verschiedenen Funktionen aufrufen Was ist die richtige Art, dieselbe Variable aufzurufen, die in verschiedenen Funktionen meiner Klasse verwendet werden kann? Ich versuchte, die $settings variable Funktion direkt unterhalb der class My_Class hinzufügen, aber das hat nicht funktioniert:

class My_Class { 

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

Antwort

1

Sie können

protected $settings; 

Dann $ Einstellungen als Klasseneigenschaft deklarieren innerhalb __construct

$this->settings = get_option('my_options'); 

Sie können dann überall innerhalb der Klasse darauf zugreifen, indem Sie $this->settings

verwenden
public function function_1() { 
    echo 'This option is ' . $this->settings['option_1']; 
} 

Für weitere Informationen über properties können Sie auf PHP-Dokumentation http://php.net/manual/en/language.oop5.properties.php

Verwandte Themen