私はPHP Objected Oriented Programmingを習得しようとしていますが、ビデオチュートリアルでは、チュートリアルプレゼンターに同じ問題はありませんが、エラーが表示されます。PHP __toString()正しく動作していませんか?
PHPコード:
<?php
class Player {
public $score = 10;
public $name = "";
public function __construct($score,$name) {
$this->score = $score;
$this->name = $name;
}
public function __destruct() {
echo "Object With Name ".$this->name." has been destroyed";
}
public function __toString() {
echo "The Object with name ".$this->name." has been echoed</br>";
}
}
$newPlayer = new Player(50,"Ahmad");
echo $newPlayer;
?>
私は、次のエラーを取得しています:私は変更
The Object with name Ahmad has been echoed
Catchable fatal error: Method Player::__toString() must return a string value in D:\xampp\htdocs\php_oop\index.php on line 30
echo
return
へのI私は設定解除わけではないと起きてはならない以下の出力を得ますオブジェクト。 echo
をに変更したときに__destruct()
関数が呼び出されるのはなぜですか?toString()
?
エラーは次のようになります。
The Object with name Ahmad has been echoed
Object With Name Ahmad has been destroyed
'__toString()'メソッドで 'echo'の代わりに' return'を使うべきです。 – Raptor
@Raptor:はい私は 'return'を使う時とまったく同じですので、' __destruct() 'getはエコー時にも呼ばれますか?質問を正しく読んでください..! –
デストラクタが呼び出されるのは**通常の**動作です。スクリプトの実行が終了するとオブジェクトがガベージコレクトされるためです。 – Raptor