2012-01-11 12 views
0

heredoc内から関数を呼び出そうとしていますが、manual(例#2)で可能です。しかし、私は次のエラーを受け取ります:Notice: Undefined property: TIME::$since on line 13。私がする必要がどのようなheredoc内のPHPコール関数

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; ?> 

は機能since()の整数として1を渡し、(since January of 2011)のような文字列を返すことです。

+1

{1}は(1)以降である必要があります - 関数呼び出しであるため –

+0

あなたのクラスの名前を変更しようとしましたか?TimeSinceにしますか? –

+1

そして{1}} 'から' {$ time-> since {1}} 'を試してみたら? – Elorfin

答えて

1

コードに多くのエラーがあります。

EOF; 
?> 

:ヒアドキュメントを閉じるときにPHPタグを終了すると、改行でなければなりません - $this->$month$this->$year{$time->since(1)};であってもよく、最終的に、EOF; ?>return "(since {$this->month} of {$this->year})";{$time->since{1}};でなければならない、私は考えるあなたのケースで$this->month$this->yearreturn "(since $month of $year)";、でなければなりませんPSなぜ古いPHP4スタイルのプロパティ宣言を使用していますか?

+0

ああ、それは多くの^^、ありがとう! btw、 "PHP4スタイルのプロパティ宣言"はどういう意味ですか? – jacob

+0

@jacobどのtimurが参照しているかは次のとおりです: 'var $ month;'これを確認してください:[PHP5 Variables Basics docs](http://www.php.net/manual/en/language.variables.basics.php) – ThinkingMonkey

+0

@ TinkingMonkey、私は通常それをしませんが、私は問題を抱えていたので、私はページの例に従おうとしました。 – jacob

4

これは$time->since(1)です。 since{1}を使用すると、「since」と呼ばれる$ timeオブジェクトの属性に格納されている文字列の2番目の文字を返します。

例えば:

$x = 'hello'; 
echo $x{0}; // outputs 'h' 
echo $x{2}; // outputs 'l' 
1

すべてが予想ように動作しますが、あなたは財産$sinceが、方法since()を持っていません。ただ、この方法

$time->since(1); 

ここ{1}は、配列アクセス用の代替構文があるようにそれを呼び出します。