はじめまして。著者の小川です。
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の公式でもう少し基礎から学びます。
エンティティーやマッピングといった単語はなんとなくしか理解できてませんし、名前空間とautoloadの辺りもどうなってるのか謎のままですので。
書籍の方は、とてもいい本でした。もともとオブジェクト指向関係で本屋をうろついていた時に手に取ったら求めていたものが多く書かれていたので購入したのですが、かなり勉強になりました。