はじめまして。著者の小川です。
LoginProxyは、ユーザの入力データを元にUserエンティティを検索するオブジェクトです。p.238の最後に文にありますが、ユーザの入力情報をUserエンティティにマッピングすることは、ここでは行っていません。
フォームからデータを受け取ったあとの具体的な処理フローは次のようになります。
- LoginTypeからLoginProxyオブジェクトにデータがマッピングされる
- ここではpublicな$email, $passwordに直接マッピングされる
- LoginProxyオブジェクトにバリデーションを行う
- LoginProxy::authenticate()が呼び出される
- authenticate()の中でLoginProxyのemail、passwordプロパティの値を元に、UserRepositoryからUserエンティティを取得する
- 取得したUserエンティティにはデータベースの値がマッピングされる
- UserエンティティはLoginProxyのuserプロパティに格納される
- 3で取得したUserエンティティをLoginProxy::getUser()から取得
以上です。LoginProxyのemailやpasswordプロパティは、authenticate()メソッド(p.241のリスト)のみで用いていますので、このあたりを再度ご確認いただければと思います。
なお、SymfonyのFormコンポーネントでは、privateなプロパティであってもセッター/ゲッターメソッドが定義されていれば、それらを経由して読み書きが可能です。この部分はp.241の下部に書かれています。
この本に書かれているエンティティやマッピングという考え方はSymfony独自のものではなく、幅広く利用できるパターンとなっています。
例えばエンティティについて詳しく知りたい場合、「エリック・エヴァンスのドメイン駆動設計」という書籍が参考になるかと思います。
また、名前空間やオートロードについてはPHPの仕様の話になってきますので、「パーフェクトPHP」が参考になるかと思います。
Symfonyにおける名前空間やオートロードのルールはPSR-0という標準にしたがっていますので、細かいルールについては参考にしていただければと思います。
この本はどちらかというと初心者(プログラミング初心者ではなく、現場で働くエンジニアの初級者)を想定し、世の中にたくさんある優れた概念や考え方をまんべんなく解説することを目的としているため、1つの概念を深く掘り下げるといったことは意図的に行っていません。そのため、場合によってははっきりと理解が得られないものもあるかもしれません(これは筆者の力不足です)。
ですので、上記で紹介した書籍や、インターネットを探すと、様々な情報が転がっていると思いますので、そういったものも手がかりに、じっくりと読み解いていただけると幸いです。