バグだと思うことを経験しましたが、よくわかりません。だから私はここに来て、私よりもこれについてよく知っている人に尋ねます.これはPHPのバグですか? 次の行を見てください。
<h1>Tests</h1>
<?php
class Foo
{
public function __invoke()
{
return 'Called correctly';
}
}
class Boo
{
public function __construct()
{
$this->Foo = new Foo();
}
}
$Foo = new Foo();
echo $Foo();
echo "<br><br><hr><br><br>";
$Boo = new Boo();
echo $Boo->Foo();
仕様によると、のでThe __invoke() method is called when a script tries to call an object as a function
、私はこれを取得する必要があります:
正しく呼び出されました
正しく呼び出されました
ただし、最後のエコーは実行されません。代わりに、これを取得します:
PHP 致命的なエラー: 26 行目の [...]/index.php で未定義のメソッド Boo::Foo() を呼び出します
これはバグですか、それとも予想される動作ですか? バグの場合は、送信方法についてのヘルプをいただければ幸いです。
ジョンの回答に基づいて編集して、醜い動作をさらに示します
class Doo
{
public function __construct()
{
// The Foo class is the same as the one defined before
$Test = new Foo();
echo $Test(); // Echos correctly
echo "<br><br><hr><br><br>";
$this->Foo = $Test;
echo $this->Foo(); // Error. Heisenbehaviour?
}
}
$Boo = new Doo();