これまでのところ、OOP プログラミングの概念と利点を理解できたと感じています。また、PHP でクラスを操作する方法を理解するのに苦労したことはありません。
しかし、これは私を少し混乱させました。たぶん理解できると思いますが、まだ確信が持てません。
私は一連のビデオ チュートリアルに従っています (外部リソースへのリンクに関するルールについてはわかりませんが、YouTube で見つけました)。苛立たしいことに、チューターがあるクラスを別のクラス内のパラメーターとして渡すことにした場合を除きます。少なくとも私はそれが起こっていると思います。
Class Game
{
public function __construct()
{
echo 'Game Started.<br />';
}
public function createPlayer($name)
{
$this->player= New Player($this, $name);
}
}
Class Player
{
private $_name;
public function __construct(Game $g, $name)
{
$this->_name = $name;
echo "Player {$this->_name} was created.<br />";
}
}
次に、Game クラスのオブジェクトをインスタンス化し、そのメソッドを呼び出しています。
$game = new Game();
$game-> createPlayer('new player');
かなり苛立たしいことに、家庭教師はなぜこれを行ったのかを実際には説明しておらず、私が見る限り、それを正当化するコード内の呼び出しを表示していません。
Player のマジック メソッド コンストラクタは、Game クラスを参照として渡していますか? これは、参照によって Player クラス内でクラス全体にアクセスできるということですか? 特定のメソッドやプロパティを指さずに $this を参照する場合、クラス全体を参照していますか?
これが起こっているのなら、なぜ私はそれをしたいのでしょうか? ゲーム クラス内にプレーヤーを作成した場合、ゲーム クラス内のプレーヤー プロパティとメソッドにアクセスできますよね? Player クラス内にも Game クラスが必要なのはなぜですか? たとえば、Player クラス内で createPlayer() を呼び出すことはできますか?
私の説明が紛らわしかったら申し訳ありません。
私の質問は次のようになります。パラメータとして正確に渡すのは何ですか?なぜ毎日のOOPプログラミングでそれをやりたいのですか?