dqqlziv195281 2019-05-05 11:44
浏览 33

PHP 7变量范围问题:全局与$ this->,或者使用什么而不是全局?

My variables are not working, and I'm not sure why. I did not define $var as static, so when I reference it as global, or as $this->var, it should be the same variable, right? Except it isn't.

Some people say 'global' shouldn't be used, instead pass parameters to the function. But what if I need to work with 20 variables in an instance's function? Do I really pass 20 parameters to it? Doesn't it become unreadable and unclear?

I'm running PHP 7.2.8. on XAMPP, but that isn't really relevant.

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

I'm expecting the $var to be the same thing in both cases. Why does it become two?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 微信小程序协议怎么写
    • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
    • ¥20 怎么用dlib库的算法识别小麦病虫害
    • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
    • ¥15 java写代码遇到问题,求帮助
    • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看