PHP - 私有类变量给错误:未定义的变量
问题描述:
我收到错误“未定义的变量:区间在C:\ WAMP \ WWW \ DGC \类\ DateFilter.php”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类和呼叫测试的新实例()它给我的错误。我意识到这意味着变量还没有被初始化,但我知道构造函数被调用,因为我在那里放置了一个echo语句,并且它被输出。
我也尝试过: $ this :: $ interval-> format(...); self :: $ interval-> format(...); 但它没有奏效。
我知道这可能是一个简单的修复,对于noob问题抱歉。我不敢相信这让我难堪。
答
您必须使用$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
}
}
答
function test()
{
echo $this->interval->format("%d days old </br>");
}
答
试图
public var $interval;
和
echo $this->interval;
答
$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';
}
}
+0
完美,这是我错过的最后一块拼图。 – CHawk
echo $ this - > $ interval-> format(“%d days old”); 也给我这个同样的错误:/ – CHawk
删除第二个美元符号。它是$ this-> interval –
我总是发现PHP非常“奇怪”,迫使你使用'$ this'来访问对象字段。许多其他语言(如C#)不会(如果变量与本地名称不同)。无论如何,使用'this'总是一个好习惯,恕我直言:它可以帮助您快速查看对象属性并避免与局部变量混淆。 – gremo