herdoc中的php调用函数

herdoc中的php调用函数,php,class,function,heredoc,Php,Class,Function,Heredoc,我试图从一个herdoc中调用一个函数,我在(示例2)中读到这是可能的。但是,我得到了以下错误:注意:第13行的未定义属性:TIME::$since 1 <?php class TIME { 2 var $month; 3 var $year; 4 public function since($y) { 5 $this->$month = (date("F")); 6 $this->$year =

我试图从一个herdoc中调用一个函数,我在(示例2)中读到这是可能的。但是,我得到了以下错误:
注意:第13行的未定义属性:TIME::$since

1   <?php class TIME {
2       var $month;
3       var $year;
4       public function since($y) {
5           $this->$month = (date("F"));
6           $this->$year = (date("Y")-$y);
7           return "(since $month of $year)";
8           // return "(since date('F') of {date('Y')-$y})";
9       }
10  }
11  $time = new TIME;
12  echo <<<EOF
13      {$time->since{1}};
14  EOF; ?>
1现在是
$time->since(1)
。使用
since{1}
被解释为“给我$time对象的属性'since'中存储的字符串的第二个字符”

e、 g:

这是自(1)以来的
$time->
。使用
since{1}
被解释为“给我$time对象的属性'since'中存储的字符串的第二个字符”

e、 g:


一切正常,但您没有属性
$since
,而是方法
since()
。把它当作一种方法

$time->since(1);

在这里,
{1}
是数组访问的替代语法。

一切正常,但您没有属性
$since
,而是方法
since()
。把它当作一种方法

$time->since(1);

这里的
{1}
是数组访问的替代语法。

您的代码中有很多错误
$this->$month
$this->$year
必须是
$this->month
$this->year
在您的情况下,
返回“(自$year中的$month)”,我认为,必须是
返回“(自{$this->month}of{$this->year})
{$time->since{1}
可以是
{$time->since(1)},最后,
EOF;?>-关闭代码时,结束PHP标记必须在换行符上:

EOF;
?>

另外,为什么要使用旧的PHP4样式的属性声明?

您的代码中有很多错误
$this->$month
$this->$year
必须是
$this->month
$this->year
在您的情况下,
返回“(自$year中的$month)”,我认为,必须是
返回“(自{$this->month}of{$this->year})
{$time->since{1}
可以是
{$time->since(1)},最后,
EOF;?>-关闭代码时,结束PHP标记必须在换行符上:

EOF;
?>

还有,为什么要使用旧的、PHP4风格的属性声明?

既然{1}应该是因为(1)-既然它是一个函数调用,你有没有尝试过重命名你的类,比如说TimeSince?如果你尝试
{$time->since(1)}
而不是
{$time->since{1}
,因为{1}应该是因为(1)-因为它是一个函数调用,你有没有尝试过重命名你的类,比如说TimeSince?如果你尝试
{$time->since(1)}
而不是
{$time->since{1}
?哇,这解释了很多^^,谢谢!顺便说一句,“PHP4风格的属性声明”是什么意思?@jacob timur所指的是:
var$month检查此项:@ThinkingMonkey,我通常不会这样做,但因为我遇到了问题,我尝试按照页面上的示例进行操作。@jacob所以,我认为,您现在不需要使用
var
关键字而不是
public
或其他:)哦,哇,这解释了很多^^,谢谢!顺便说一句,“PHP4风格的属性声明”是什么意思?@jacob timur所指的是:
var$month检查此项:@ThinkingMonkey,我通常不会这样做,但因为我遇到问题,我尝试按照页面上的示例进行操作。@jacob因此,我认为,您现在不需要使用
var
关键字,而不必使用
public
或其他内容:)