web-dev-qa-db-ja.com

PHP-エラーを出すプライベートクラス変数:未定義の変数

「未定義の変数:C:\ wamp\www\DGC\classes\DateFilter.phpの間隔」というエラーが発生します

DateFilterクラスのコードは次のとおりです。

class DateFilter extends Filter
{
    //@param daysOld: how many days can be passed to be included in filter
    //Ex. If daysOld = 7, everything that is less than a week old is included
    private $interval;

    public function DateFilter($daysOld)
    {
        echo 'days old' . $daysOld .'</ br>';
        $interval = new DateInterval('P'.$daysOld.'D');
    }


    function test()
    {
        echo $interval->format("%d days old </br>");
        //echo 'bla';
    }

}

DateFilterクラスの新しいインスタンスを作成してtest()を呼び出すと、エラーが発生します。変数が初期化されていないことを意味しますが、そこにechoステートメントを入れて出力したので、コンストラクターが呼び出されていることはわかっています。

私も試しました:$ this :: $ interval-> format(...); self :: $ interval-> format(...);しかし、それは機能しませんでした。

私はこれがおそらく簡単な修正であることを知っています、noobの質問で申し訳ありません。これが私を困惑させたなんて信じられない。

14
CHawk

PHPでメンバー変数intervalにアクセスするには、$this->intervalを使用する必要があります。 PHP:The Basics を参照してください。

class DateFilter extends Filter
{
    private $interval;    // this is correct.

    public function DateFilter($daysOld)
    {
        $this->interval = new DateInterval('P'.$daysOld.'D');   // fix this
    }

    function test()
    {
        echo $this->interval->format("%d days old </br>");     // and fix this
    }
}
34

$intervalは関数に対してローカルです。 $this->intervalあなたの私有財産を参照します。

class DateFilter extends Filter
{
    //@param daysOld: how many days can be passed to be included in filter
    //Ex. If daysOld = 7, everything that is less than a week old is included
    private $interval;

    public function DateFilter($daysOld)
    {
        echo 'days old' . $daysOld .'</ br>';
        $this->interval = new DateInterval('P'.$daysOld.'D');
    }


    function test()
    {
        echo $this->interval->format("%d days old </br>");
        //echo 'bla';
    }

}
3
Herbert
function test()
{
    echo $this->interval->format("%d days old </br>");
}
2
CheeseSucker

しようとしています

public var $interval;

そして

echo $this->interval;
0
Jan Wiemers