※ ChatGPTを利用し、要約された質問です(原文:[PHP]子クラスに独自の実装をする)
[PHP]子クラスに独自の実装をする
このQ&Aのポイント
子クラスに独自の実装をする学習をしています。親クラス Post を継承する子クラス showSponsor を作成し、スポンサー名を表示するメソッドを追加しました。
しかし、新しいインスタンスを作成する際に発生したエラーを解決することができません。エラーメッセージは 'undefined constant ’Yahoo’ - assumed '’Yahoo’'' です。
原因がわからず困っているので、エラーの原因と解決方法を教えてください。
現在子クラスに独自の実装をしていくという学習をしています。
親クラス Post を継承する子クラス showSponsor を作成してみました。
子クラスのコンストラクタの引数に親クラスのプロパティ'$text'、と子クラスで
新たに作成した'$sponsor'を入れました。
その後、newで新しく作った'showSponsor 'のインスタンスを作りました。
スポンサー名は'Yahoo'としてみました。
$posts[2] = new SponsoredPost('hello hello', ’Yahoo');
その後、同様に新しく作成した ’showSponsor()’ メソッドを表示するために
$posts[2]->showSponsor();
を追加しました。
この記述で実行すると
"Warning: Use of undefined constant ’Yahoo’ - assumed '’Yahoo’' (this will throw an Error in a future version of PHP) in C:\xampp\htdocs…"
と出ます。「'Yahoo'という定義されていない定数を使っている」というような意味かと思います。
子クラスである'SponsoredPost'内の sponsoreのどこかにミスがあるのでしょうか?
エラー行はコード内に記述したある
$posts[2] = new SponsoredPost('hello hello', ’Yahoo');
の部分です。
表示結果では一応’Yahoo’の文字出ていますが、 ' (シングルクォート) も一緒についています。文字列ということを表すためにつけたものです。
初学者の自分にはエラーの原因がわかりません。
もしエラーの原因がわかる方いらっしゃいましたら教えてください。
宜しくお願い致します。
------------------------------------
<?php
class Post
{
private $text;
public function __construct($text)
{
$this->text = $text;
}
public function show()
{
printf('%s',$this->text);
}
}
class SponsoredPost extends Post
{
private $sponsor;
public function __construct($text, $sponsor)
{
parent:: __construct($text);
$this->sponsor = $sponsor;
}
public function showSponsor()
{
printf('%s', $this->sponsor);
}
}
$posts=[];
$posts[0] = new Post('hello');
$posts[1] = new Post('hello again');
//★エラー行
$posts[2] = new SponsoredPost('hello hello', ’Yahoo');
$posts[0]->show();
echo "<br>";
$posts[1]->show();
echo "<br>";
echo "<br>";
$posts[2]->show();
echo "<br>";
$posts[2]->showSponsor();
------------------------------------
お礼
ありがとうございました。