全局变量在类和函数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的唯一赋值是在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);

变量$a应该是类

中的一个属性

代码如下:

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

?>

试试这个:

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