PHP全局变量没有改变[重复]

Posted

技术标签:

【中文标题】PHP全局变量没有改变[重复]【英文标题】:PHP global variable is not changing [duplicate] 【发布时间】:2015-08-30 03:17:04 【问题描述】:

我对 php 和全局变量有疑问。 在这段代码中:

    在页面开始时,结果为:Test 123。 点击后:ListBox1点击结果为:XXXXXXXX。 点进去后:ListBox2Click结果是: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();

?>

感谢您的帮助

【问题讨论】:

评论:你有一个额外的右括号 不要使用全局变量。曾经。尤其是在封装很重要的 OO 场景中。参数列表的存在是有原因的。使用它们。 感谢您的建议,但问题是我需要存储一些变量,这些变量需要可以从两个 listBoxes OnClick 事件函数内部访问。但是现在,如上例,点击listBox2后,$someVar变为“Test 123”而不是“XXXXXXXX” @wcale,我认为您想要实现的是存储解决方案(变量存储在两个请求之间),因此与全局无关。您的变量 $somevar 也可以是私有的,并通过以下方式访问:$this-&gt;somevar... @wcale 请描述您对全局变量行为的期望?看起来您希望它们的值在独立的 http 请求之间传递。这种方式是行不通的。如果您想在 http 请求之间传递值,请参阅会话文档。 【参考方案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();

?>

【讨论】:

谢谢!它现在正在工作。我不知道,需要 $_SESSION !。并感谢代码 src!

以上是关于PHP全局变量没有改变[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无需打开注册全局变量即可获取 IP 地址 [重复]

Angular:全局变量在订阅函数内没有改变

php变量的作用域和生存期

Delphi 中全局变量无法被修改

php扩展在全局变量中不存在但是打印phpinfo却存在?

QT如何设置可变的全局变量