Skip to content

Instantly share code, notes, and snippets.

@fivestar
Created June 27, 2012 02:08
Show Gist options
  • Save fivestar/3000865 to your computer and use it in GitHub Desktop.
Save fivestar/3000865 to your computer and use it in GitHub Desktop.

はじめまして。著者の小川です。

LoginProxyは、ユーザの入力データを元にUserエンティティを検索するオブジェクトです。p.238の最後に文にありますが、ユーザの入力情報をUserエンティティにマッピングすることは、ここでは行っていません。

フォームからデータを受け取ったあとの具体的な処理フローは次のようになります。


  1. LoginTypeからLoginProxyオブジェクトにデータがマッピングされる
    • ここではpublicな$email, $passwordに直接マッピングされる
  2. LoginProxyオブジェクトにバリデーションを行う
    • LoginProxy::authenticate()が呼び出される
  3. authenticate()の中でLoginProxyのemail、passwordプロパティの値を元に、UserRepositoryからUserエンティティを取得する
    • 取得したUserエンティティにはデータベースの値がマッピングされる
    • UserエンティティはLoginProxyのuserプロパティに格納される
  4. 3で取得したUserエンティティをLoginProxy::getUser()から取得

以上です。LoginProxyのemailやpasswordプロパティは、authenticate()メソッド(p.241のリスト)のみで用いていますので、このあたりを再度ご確認いただければと思います。

なお、SymfonyのFormコンポーネントでは、privateなプロパティであってもセッター/ゲッターメソッドが定義されていれば、それらを経由して読み書きが可能です。この部分はp.241の下部に書かれています。

@DiTamaki
Copy link

DiTamaki commented Jul 8, 2012

質問したものです。丁寧な説明ありがとうございます。
実はまだよくわかってないところが多いのでsymfonyの公式でもう少し基礎から学びます。
エンティティーやマッピングといった単語はなんとなくしか理解できてませんし、名前空間とautoloadの辺りもどうなってるのか謎のままですので。
書籍の方は、とてもいい本でした。もともとオブジェクト指向関係で本屋をうろついていた時に手に取ったら求めていたものが多く書かれていたので購入したのですが、かなり勉強になりました。

@fivestar
Copy link
Author

fivestar commented Jul 8, 2012

この本に書かれているエンティティやマッピングという考え方はSymfony独自のものではなく、幅広く利用できるパターンとなっています。

例えばエンティティについて詳しく知りたい場合、「エリック・エヴァンスのドメイン駆動設計」という書籍が参考になるかと思います。

また、名前空間やオートロードについてはPHPの仕様の話になってきますので、「パーフェクトPHP」が参考になるかと思います。
Symfonyにおける名前空間やオートロードのルールはPSR-0という標準にしたがっていますので、細かいルールについては参考にしていただければと思います。

この本はどちらかというと初心者(プログラミング初心者ではなく、現場で働くエンジニアの初級者)を想定し、世の中にたくさんある優れた概念や考え方をまんべんなく解説することを目的としているため、1つの概念を深く掘り下げるといったことは意図的に行っていません。そのため、場合によってははっきりと理解が得られないものもあるかもしれません(これは筆者の力不足です)。

ですので、上記で紹介した書籍や、インターネットを探すと、様々な情報が転がっていると思いますので、そういったものも手がかりに、じっくりと読み解いていただけると幸いです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment