为什么这不会在属性和变量之间产生影响?

时间:2013-02-28 11:56:09

标签: php

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()中的其他内容,则运行正常。

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

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

更改此

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

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

答案 2 :(得分:0)

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

将您的代码更改为

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

答案 3 :(得分:0)

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

如果$ _POST ['foo'] = test,那么echo $ foo = $ _POST ['foo'];返回“test”,$ foo返回“test”,$ somethingelse返回“test”;