为什么属性和变量之间没有区别


Why does this not make a difference between property and variable?

class someclass
{
    public $foo = 'abcd';
    public function __construct($data)
    {
        $this->foo = $data;
    }
    public function doSomething()
    {
        $user = $_POST['username'];
        echo $foo = $_POST['foo']; // This output correct value     
        var_dump($foo); // This Output NULL
        $somethingelse = $_POST['foo'];
        var_dump($somethingelse); // Output as expected
    }
}

如果我改变我的变量名或属性名从$foo到其他东西在doSomething()做它运行良好。

为什么我需要保持属性名和变量名在这里不同?

为什么$fooNULL,而其中一个属性名是$foo

您需要使用$this->foo来获取和设置classes属性

change this

echo $foo = $_POST['foo'];

echo $this->foo = $_POST['foo'];
var_dump($this->foo);

访问类变量时需要使用$this->前缀。

将代码改为

echo $this->foo = $_POST['foo'];
var_dump($this->foo);

这是正确的,它工作良好。我运行了你的代码,结果总是一样。在一个或多个函数中使用属性$foo和$foo变量是没有问题的。它总是给我同样的答案。

如果$ _POST [' foo '] =测试然后echo $ foo = $ _POST["foo");$foo返回"test", $somethingelse返回"test";