PHP - 提供错误的私有类变量:未定义的变量

时间:2011-10-12 22:44:11

标签: php class variables private

我收到错误“未定义的变量: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语句并输出了它。

我也尝试过: $这:: $ interval-&GT;格式(...); 自:: $ interval-&GT;格式(...); 但它不起作用。

我知道这可能是一个简单的解决方法,对于noob问题感到抱歉。简直不敢相信这让我难过。

4 个答案:

答案 0 :(得分:31)

您必须使用$this->interval来访问PHP中的成员变量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
    }
}

答案 1 :(得分:3)

$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';
    }

}

答案 2 :(得分:2)

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

答案 3 :(得分:0)

尝试

public var $interval;

echo $this->interval;