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()に動作します。

ここでプロパティ名と変数名を異なるものにする必要があるのはなぜですか?

プロパティ名の 1 つが の場合はなぜ$fooですか?NULL$foo

4

4 に答える 4

2

$this->fooクラスプロパティを取得および設定するには、使用する必要があります

于 2013-02-28T11:59:07.723 に答える
0

それは正しく、うまく機能します。私はあなたのコードを実行しましたが、常に同じ結果が得られます。1 つまたは複数の関数にプロパティ $foo と $foo 変数があっても問題ありません。いつも同じ答えをくれます。

$_POST['foo']=test の場合、echo $foo = $_POST['foo']; $foo は "test" を返し、$somethingelse は "test" を返します。

于 2013-02-28T12:08:05.803 に答える
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 に答える