symfony: 2009年2月アーカイブ

symfonyアドベントカレンダー4日目:リファクタリング

3日目までは挫折したなりにも以前やったことがあったのですんなりだったが、4日目にしてグっとボリュームが出てきた感じ。

新しく試したキーワードをざっと挙げるだけでも、

  • モデルにトリガーメソッドを作成
  • パーシャルでフラグメントの整理
  • トランザクション
  • URLルーティング調整
  • カスタムクラス作成

となかなかに盛り沢山。

内容も盛り沢山なので、その分だけわからない点もいくつか出てきた。

例えばInterest.phpのsaveメソッドを修正するところで、いきなり「$this->getQuestion()」が取れてしまうのは何で?schemaの定義に基づいて、modelが関連するQuestionオブジェクトも取得してくれてるってことなのかな。その辺りの自動で済ませてくれている部分が把握できてないと、重複してわざわざ取りに行くようなコードを書いてしまいそう。

ルーティングはかなり柔軟性が高そうで良さげですね。この恩恵を受けるために、テンプレート上のリンクはlink_toヘルパを使うようにすることが大事そう。

カスタムクラス作成でやったタイトルのストリップ処理は、日本語タイトル用にurlencodeするように変えたりしていましたが思うように動いてくれませんでした。これもちょっと課題。

symfonyを入り口近辺でちょろちょろ試してはいたものの、ある程度まとまった知識が欲しいと感じ始めていたので、以前から取り組んではすぐ挫折していたaskeetに再びやることにしました。最低限、24日目まで通してやることが目標。

ちなみにsymfonyバージョンは1.0.19。今から始めるなら1.2系がスジなんでしょうが、askeetチュートリアルDefinitive Guideも日本語訳が揃っている1.0系に有難く頼らせて頂きたいということで・・・。

1日目

環境構築やプロジェクト、アプリケーションの作成など。

Subversion周りの作業など関係無いところはスキップして、とりあえずさくっと終了。

2日目

DB周りの作業をざーっと行う。

$ symfony propel-generate-crud frontend question Question

上記コマンドでCRUDジェネレータを実行するところで、「Questionモジュールが無い」とエラーになりました。そういえばmodule作成する箇所が無かったような・・・。

というわけで、questionモジュールも先に作成しておきます。

$ symfony init-module frontend question

3日目

レイアウトやテンプレートの変更、ルーティング調整、バッチファイルからのテストデータ取り込みなど。

以下、感じたこと。

  • ORMの恩恵受けられるようなDB設計を考慮することが大事。
  • ジェネレータでベース作って、不要なアクション・テンプレートをクリーンアップしていくという流れがやっぱり基本?
  • css落としてきたけど、なんだかレイアウトずれてるんですが・・・。とりあえず無視。

 

ひとまず今日はここまで。

このアーカイブについて

このページには、2009年2月以降に書かれたブログ記事のうちsymfonyカテゴリに属しているものが含まれています。

次のアーカイブはsymfony: 2009年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

symfony: 2009年2月: 月別アーカイブ

RSSフィード

  • 購読する

いろいろ

あわせて読みたい

フィードメーター - ポップフライ

seo

Powered by Movable Type 4.01