PHPの「__construct」メソッドについて/勉強中
Laravelの仕組みについて勉強していたところ、「__construct」というものが出てきたので、copilotに聞いたことをメモしておきます。 Bladeテンプレートで次のようなコードによりセッションのmessageがMessageクラスのインスタンスに引数として渡されます。 このとき、セッションのmessageが、Messageクラスの中の「__construct」の引数として渡されることにより処理がうまく流れていくのですが、なぜ単にMessageクラスの引数であるだけのmessageが、ちゃんとその中でも「__construct」の引数として扱われるのか、言い換えると、Messageクラスの中に「__construct」以外のfunctionが存在していても、その引数はほかのfunctionではなく「__construct」に渡すものであるとどういう風に判定しているのだろうか。この点が疑問でした。 調べたところ、「__construct」というのはPHPに用意されている特別なメソッドであり、クラスのインスタンスが生成されるときに最初に実行される性質を持つようです。そのため、クラスの中に「__construct」が存在すれば、クラスに対して渡された引数は、インスタンス化時に必ず「__construct」の引数として処理されるとのことです。ちなみにこういった「__」で始まるものはほかにもあって、PHP標準の機能として用意されているマジックメソッドというそうです。 代表的なマジックメソッド これまで素のPHPの基本を学び、Dockerの環境構築もようやく完了し、ついに本格的に勉強を進められるようになったけど、勉強すればするほど新しい疑問が出てきて、習得までには結構時間がかかりそうです。