PHP 7变量范围问题:全局与$ this->,还是使用什么代替全局?

时间:2019-05-05 11:44:36

标签: php backend

我的变量不起作用,我不确定为什么。 我没有将$ var定义为静态的,因此当我将其引用为全局变量或$ this-> var时,它应该是相同的变量,对吗? 除非不是。

有人说不应使用“全局”,而是将参数传递给函数。但是,如果我需要在实例的函数中使用20个变量怎么办? 我真的要传递20个参数吗? 会不会变得不可读和不清楚?

我正在运行PHP 7.2.8。在XAMPP上,但这并不重要。

<?php
class Test{

    public $var;
    public function __construct($param)//1
    {
        global $var; //5
        $this->var = $param; //1
        $var = $param * 5; //5
    }

    public function wtf(){
        global $var; //5
        $foo = $this->var; //1

        echo "var: $var <br>";
        echo "this var: $foo <br>";
    }
}

$foo = new Test(1);
$foo->wtf();
$value = $foo->var;
echo "Value: $value";
?>

Output:

var: 5
this var: 1
Value: 1

我期望$ var在两种情况下都是一样的。为什么变成两个?

0 个答案:

没有答案