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

Php 为什么属性和变量之间没有区别?,php,Php,如果我将变量名或属性名从$foo更改为dosindoSomething()中的其他内容,则运行正常 为什么我需要在这里保持属性名和变量名不同 当其中一个属性名为$foo时,为什么$foo为NULL class someclass { public $foo = 'abcd'; public function __construct($data) { $this->foo = $data; } public function doSo

如果我将变量名或属性名从
$foo
更改为dosin
doSomething()
中的其他内容,则运行正常

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

当其中一个属性名为
$foo
时,为什么
$foo
NULL

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

    }
}


访问类变量时,需要使用
$this->foo
来获取和设置class属性,需要使用
$this->
前缀

将代码更改为

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

这是正确的,它工作得很好。我运行了你的代码,它总是给我相同的结果。您可以在一个或多个函数中使用属性$foo和$foo变量。它总是给我同样的答案


如果$\u POST['foo']=test,则echo$foo=$\u POST['foo'];返回“test”;$foo返回“test”;$somethingelse返回“test”

您正在运行什么版本的PHP,因为这对我来说很好用?请再次仔细阅读问题
echo $this->foo = $_POST['foo'];
var_dump($this->foo);
echo $this->foo = $_POST['foo'];
var_dump($this->foo);