第4回 Symfonyユーザー会IRC集会を開催しました

Symfonyに関するアレコレを話し合うIRC集会の第4回を、7/18(日)の21時~23時に開催しました。 以下、IRC集会の内容のまとめです。

まとめ

symfony 1.xのコンポーネントが便利

  • コンポーネントって?(ビューで使えるパーシャルの仲間)→ ビューレイヤーの内側:コンポーネント
  • コンポーネントはパーシャルとは違い、別のモジュールにあるコンポーネントを呼び出せる。
  • コンポーネントはアクションと似ているが、機能制限がある
    • sfComponent→sfAction→sfActionsと継承されていて、アクションメソッド内で利用できるforward()メソッドなどはsfActionで定義されているものなので、コンポーネントでは利用できない。
  • 現在実行されているアクションのアクション名、モジュール名を取得するにはやや工夫が必要。
    • コンポーネント内で $this->getModuleName() 等を使うと、コンポーネント自体が配置されているモジュール名が返る。

以下のようなコードでアクションオブジェクトを取得して、そこからモジュール名などを取得する。

$action = sfContext::getInstance()->getController()->getActionStack()->getLastEntry()->getActionInstance();
 
  • DBから値を取得して描画するサイドバーや、Cookie(Userオブジェクト)の情報からレコメンドを表示するパーツなどには向いているという意見あり。
  • 拡張するには、component.method_not_foundイベントを利用する方法もある。

プラグインのインストールでエラーが出る場合がある

  • プラグインのインストールコマンドを実行すると、succeeded, but it is not a valid package archive~というエラーが表示されてインストールできない場合がある。
    • PEAR自体、またはPEARパッケージに問題があると思われるが、よく分からない。
    • 同じプラグインを問題なくインストールできるので、環境依存か?

設計書はどういったものを書いているか?

  • UMLのクラス図を書いているという方
  • 関連して、doxygenを使えないか?という話

高負荷対応の話

  • とりあえずキャッシュを使う
  • ビューキャッシュを使う
  • DBでJOINしないようにする
  • Webサーバー側の台数を増やしやすい場合は、Webサーバー側に負荷を持ってくる(JOINの処理をアプリ側で組み立てる)というのもアリではないかという意見。

ビューキャッシュ、コンポーネントのキャッシュ、Symfony2でのキャッシュの話

  • Symfony2のキャッシュ(ESI)は優秀
    • パーツ単位のキャッシュ時間などを柔軟に設定可能。
  • symfony 1.xのコンポーネントで同じ事ができないか?
    • コンポーネントのキャッシュは、コンポーネントが使われる本体側のキャッシュに引き摺られる。
    • うまく使えた気がするという意見もあったため、次回以降で時間があれば調査。

次回

次回は3週間後、8/8(日)の21時~23時で開催予定です。

インデックス

Document Index

関連ページリスト

Related Pages

日本語ドキュメント

Japanese Documents

リリース情報
Release Information

Symfony2 に関する情報(公式) Books on symfony