2015-06-14 7 views
-1

У меня проблема с PHP и глобальными переменными. В этом коде:Глобальная переменная PHP не меняется

  1. на стартах странице, результат: Test 123.
  2. После нажатия на: СписокBox1Показать результат: XXXXXXXX.
  3. После нажатия на: СписокBox2Показать результат: Test 123, что не так!

Есть ли какой-либо метод, где я могу изменить глобальную переменную таким образом? Это необходимо изменить изнутри функции «ListBox1Click» и отображать из кода в: «ListBox2Click».

<?php 
    require_once("rpcl/rpcl.inc.php"); 
    //Includes 
    use_unit("forms.inc.php"); 
    use_unit("extctrls.inc.php"); 
    use_unit("stdctrls.inc.php"); 

    //Class definition 

    class Page1 extends Page 
    { 
    public $Label8 = null; 
    global $someVar; 
    $someVar = "Test 123"; 
    $this->Label8->Caption = $someVar; 

    function ListBox1Click($sender, $params) 
    { 
     global $someVar; 
     $someVar = "XXXXXXXX"; 
     $this->Label8->Caption = $someVar; 
    } 
    function ListBox2Click($sender, $params) 
    { 
     global $someVar; 
     $this->Label8->Caption = $someVar; 
    } 
    } 

    global $application; 

    global $Page1; 

    //Creates the form 
    $Page1=new Page1($application); 

    //Read from resource file 
    $Page1->loadResource(__FILE__); 

    //Shows the form 
    $Page1->show(); 

?> 

Спасибо за помощь

+1

Комментарий: У вас есть дополнительная закрывающая скобка ''} –

+2

Не используй глобал. Когда-либо. Особенно в сценарии OO, где важна инкапсуляция. Списки аргументов существуют по какой-то причине. Используй их. –

+0

Благодарим вас за консультацию, но проблема в том, что мне нужно хранить как-то несколько переменных, эти переменные должны быть доступны изнутри и в функции событий OnClick в ListBox. Но сейчас, как показано выше, после нажатия на listBox2, $ someVar меняется на «Test 123» и не остается «XXXXXXXX» – wcale

ответ

1

Вашего решение может выглядеть следующим образом:

<?php 
    require_once("rpcl/rpcl.inc.php"); 
    //Includes 
    use_unit("forms.inc.php"); 
    use_unit("extctrls.inc.php"); 
    use_unit("stdctrls.inc.php"); 

    //Class definition 

    class Page1 extends Page 
    { 
    public $Label8 = null; 
    private $someVar; 

    public function __construct($application) 
    { 
     parent::__construct($application); 

     //load from storage 
     $this->someVar = $_SESSION['someVar']; 
     $this->Label8->Caption = $this->someVar; 


    } 

    public function __destruct() 
    { 
      //save to storage 
      $_SESSION['someVar'] = $this->someVar; 
    } 

    public function ListBox1Click($sender, $params) 
    { 
     $this->someVar = "XXXXXXXX"; 
     $this->Label8->Caption = $this->someVar; 

    } 

    public function ListBox2Click($sender, $params) 
    { 
     $this->Label8->Caption = $this->someVar; 
    } 
    } 

    global $application; 

    //Creates the form 
    $Page1=new Page1($application); 

    //Read from resource file 
    $Page1->loadResource(__FILE__); 

    //Shows the form 
    $Page1->show(); 

?> 
+0

Спасибо! Теперь он работает. Я не знал, что необходимо $ _SESSION!. И спасибо за код src! – wcale

Смежные вопросы