繁体   English   中英

类和函数PHP中的全局变量

[英]Global variable inside class and function PHP

我在读取另一个函数中在一个函数中定义的变量时遇到麻烦。 我有:

global $a;
class test{
    function aa($somevar){
        switch ($myvar){
        case 'value':
            global $a;
            $a = 15;
            break;
        }
    }
    function bb(){
        global $a;
        echo $a;
    }
}

$foo = new test();
$ccc = $foo->bb();

var_dump($ccc);

我得到转储结果为NULL。 谢谢

变量$a应该是类内的一个属性

您在代码中的任何时候都不会为$a赋值。

$a的唯一赋值是在test->aa方法中,该方法使用不一致的变量,因此即使被调用也永远不会赋给$a

你永远不会运行test->aa()的值赋给a

$foo = new test();
$foo->aa();
$ccc = $foo->bb();

在这种情况下, $ccc仍然为空,因为您是在$foo->bb()中回显$a而不是返回它。

function bb() {
  global $a;
  return $a;
}

我还将远离全局变量,并在类的构造函数中传递变量$ a。 例如:

class test {
    public $a;

    function __construct($a = null) {
      // pass initial var to $a if you want
      $this->a = $a;
    }

   function aa($somevar) {
      // reassign $a
      $this->a = $somevar;
   }
}

$foo = new test();
$foo->aa(5);
// or just $foo = new test(5);
var_dump($foo->a);

尝试这个 :

class test
{
    public $a;
    function aa($somevar)
    {
        switch ($myvar)
        {
         case 'value':
         $this->a = 15;
         break;
        }
    }
    function bb()
    {        
        return $this->a;
    }
}

$foo = new test();
$ccc = $foo->bb();

var_dump($ccc);

更新:

<?php
class test
{
    var $a;
    function aa($somevar)
    {
        switch ($somevar)
        {
         case 'value':
         $this->a = 15;
         break;
        }
    }
    function bb()
    {        
        return $this->a;
    }
}

$foo = new test();
$foo->aa('value');
$ccc = $foo->bb();

var_dump($ccc);
?>

这是代码试试这个。

<?php
 global $a;
  class test{

    function aa($somevar){
       switch ($somevar){
        case 'value':
            global $a;
            $a = 15;
            break;
        }
    }

function bb(){
    global $a;
    echo $a;
    return $a;
}
}

$foo = new test();
$foo->aa('value');
$ccc = $foo->bb();

var_dump($ccc);


?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM