75234


現在子クラスに独自の実装をしていくという学習をしています。  
親クラス 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’の文字出ていますが、 ' (シングルクォート) も一緒についています。文字列ということを表すためにつけたものです。

初学者の自分にはエラーの原因がわかりません。  
もしエラーの原因がわかる方いらっしゃいましたら教えてください。  
宜しくお願い致します。

* * *
[code]

    <?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();
    
[/code]

* * *


CC BY-SA 4.0
2021-04-10T07:47:20.517
75196
2021-04-13T08:06:32.253
2021-04-10T13:33:06.930
19110
42150
question
php
PHP で子クラスに独自の実装をすると警告が出る Warning: Use of undefined constant


コメント欄でのやり取りで解決したようなので改めて。

* * *

エラーが出ている箇所の `’Yahoo'` は先頭のシングルクォートが全角文字になっており、これが原因ではないでしょうか？


CC BY-SA 4.0
2021-04-13T08:06:32.253
75234
2021-04-13T08:06:32.253
3060
75196
answer