3
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

4

4 回答 4

2

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

于 2013-02-28T11:59:07.723 回答
0

改变这个

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

echo $this->foo = $_POST['foo'];
var_dump($this->foo);
于 2013-02-28T11:58:51.717 回答
0

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

将您的代码更改为

echo $this->foo = $_POST['foo'];
var_dump($this->foo);
于 2013-02-28T12:01:28.700 回答
0

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

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

于 2013-02-28T12:08:05.803 回答