インスタンス生成したらコンストラクタのプロパティは毎回更新される?

前提 / 質問

Category()の引数にスポーツを入れるとそのスポーツの競技人口を取得するプログラムです。

13,14行目でインスタンスを生成しています。
14行目に生成したインスタンスの引数の値(soccer)だけがコンストラクタの$nameに保持され、$name(soccer)に対応した競技人口のみが返されるのではないかと思っていました。
14行目でコンストラクタの$name(baseball)はsoccerに上書きされたのに、なぜbaseballの値も返ってくるのでしょうか?

どのようなロジックになっているのか気になり、phpドキュメントやXdebugで挙動を見てみましたが、理解できず
質問させていただきました。よろしくお願いたします。
https://www.php.net/manual/ja/language.oop5.basic.php
https://www.php.net/manual/ja/language.oop5.decon.php#object.construct

該当のソースコード

PHP

1class Sports 2{3 public function __construct()4 {5 }6 7 public function getPopulation(Category $category)8 {9 echo $category->getPopulation();10 }11}12 13$baseball = new Category('baseball');14$soccer = new Category('soccer');15$categories = [$baseball, $soccer];16 17foreach ($categories as $category) {18 $sports = new Sports();19 $sports->getPopulation($category);20}21 22

PHP

1class Category 2{3 private const SPORTS_POPULATION = [4 'soccer' => '2億6千万',5 'baseball' => '3千500万',6 ];7 8 public function __construct(private string $name)9 {10 }11 12 public function getPopulation(): string13 {14 return self::SPORTS_POPULATION[$this->name];15 }16}

コメントを投稿

0 コメント