読者です 読者をやめる 読者になる 読者になる

めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

symfony 1.4 をしばらく触ってみて疑問に思った事をまとめてみました

symfony

symfonyのチュートリアル(なんですよね?)のjobeetをある程度やってみました。
実は、中盤ぐらいで力つきてます。12〜14日あたりまでやってみると、だいぶわかってくるように思えます。思えるんですが、やっぱりわからないというか、モヤモヤします。Evernoteに疑問をぞろぞろと並べていたので、それをこちらに書いておこうと思います。

Sluggableビヘイビア

  • symfonyでのビヘイビアとは何か?
  • sluggとはどいう意味?

ビヘイビアについて説明が無い状態で登場するビヘイビア。CakePHPとは役割が違うのかな?

doctrineのbuild(jobeet(7)にて)

  • doctrineのbuildというのは自動生成だけれど、データーが消えてしまう?
  • じゃあ、運用しはじめてからカラム追加したい場合はどうするんだろう?方法があるとは思うのだけれど...(Doctrineのmigration機能でデータベーススキーマの差分管理 - しんふぉにゃん
    • doctrine:build --modelではモデルまでは作ることが可能
    • migration用のテーブルができる(migration_version)
    • バージョンを指定してテーブルを戻すこともできる

doctrine絡みには色々と悩みます。ちなみに、buildではデーターは消えません。
ただ、カラムの追加や変更というのはどうやるのか?というのがわからなくなるんです。開発・運用とも絡む部分なのでクリアにしたいです

doctrine:build --model

  • すでにある場合、なにもしない。新たにある場合は、変更を加える
  • 変更を加えるのはbaseディレクトリのみ
    • なのでbaseディレクトリ内についてはいじらない
    • baseディレクトリの中のファイルの意味は?基本的なfunctionの提供

libディレクトリの意味

  • lib
    • symfonyのコマンドで生成される
    • モデル(db)の操作
  • /apps/[app]/lib
    • アプリケーションでのライブラリ
  • /apps/[app]/modules/lib
    • モジュール単位でのライブラリ

こいうことなんだろうと思うんだけれど、これを理解するのに結構時間がかかりました。チュートリアルをやっていると、自分が今どこをいじっているのかわからなくなるので、この点に注意してやるといいのかも

schema.yml

  • phpコードを書いても問題ない(書くことはないかもしれないけれど)
  • includeも使えるので、別ファイルにして読み込み可能

これ便利です!どうやらYAMLフィアルにはPHPのコードを書いても問題ないようです。なので、設定部分で環境に合わせて読み込みを変えるとか出来そうです(試してはいない)

doctrineでデーターを物理削除しない

  • 可能
    • 標準ではないかも?
  • delete_dateという日付で記録

これたしか何かで見たんだけれど...きちんと記録しておけ、私

preExecute()

  • 引数がとれない?
  • 引数はとれないけれど、リクエスト内容はとれます
$this->getContext()->getRequest()->getParameter('hogehoge',null)

module/lib/の中

  • $this->getUser()はない?
  • session類はここには使用しないのかも。MVC的に考えてみればそうなのかもしれないけれど

$this->getUser()というのは、ところどころで出てくるんですが、どこから出てきたんだろう?Adminに関する項目当たりからアクセスしてくるユーザーのセッションに関するデータの取り出しに利用している事が多いみたい

DcotrineでDISTINCT

  • Doctrineの制限なのかDISTINCTは使えない?

ハマった...多分使えない

DoctrineでuseResultCache()

  • 結果のキャッシュが可能

これなんですけれど、気づくのに時間がかかった...

Doctrineでのテスト

  • apps\[apps]\lib\model\以下にあるクラスをモデル(lib\model\doctrine)が呼んでいる場合、指定したクラスを呼び出せない?

テストなんですが、この辺りがわからず失敗しています。limeについて調べた方がいいんでしょうか