symfonyの始め方

17
PHP MVC フフフフフフフ symfony フフフフ GOTTi@iNNX 2009/04/05

Upload: hidenori-goto

Post on 20-Jun-2015

2.687 views

Category:

Technology


0 download

DESCRIPTION

IT勉強会用スライドsymfonyの始め方

TRANSCRIPT

Page 1: symfonyの始め方

PHP MVC フレームワークsymfony の始め方

GOTTi@iNNX2009/04/05

Page 2: symfonyの始め方

(いきなり) symfony のデメリット

• PHP5 以降が必須 (symfony1.2 では5.2 以降 )

• 日本語の解説サイトがあまり多くはない

• ややメモリ使用量が多い

Page 3: symfonyの始め方

symfony の特徴• アジャイルな開発スタイルに向いてい

る• オブジェクト指向プログラミング• YAML• O/R マッパー

Page 4: symfonyの始め方

特徴 – アジャイル• ファイルが最初から適度に分散されて

いる(適当な粒度)→アクション、テンプレート、モデル /Peer 、フォーム、設定

• 各機能を付けたしながら全体を作り上げていくスタイルでも対応しやすい

Page 5: symfonyの始め方

特徴 – オブジェクト指向• PHP5 以降専用の恩恵• 例1.オブジェクトメソッドとクラス

メソッドの分離(モデルと Peer )• 例2.インターフェイス

Iterator 、 ArrayAccess などを自前クラスに実装できる

• 共有ライブラリを作りやすい

Page 6: symfonyの始め方

特徴 - YAML

• 設定ファイルの多くは YAML で記述→ http://ja.wikipedia.org/wiki/YAML

• 設定ファイルの記述の負担が少ない• テストデータを YAML で記述して読み

込む仕組み( Fixture File ) →構文( PHP や SQL )を意識せずにテストデータを作れ、再読み込みなども楽

Page 7: symfonyの始め方
Page 8: symfonyの始め方

特徴 – O/R マッパー• O/R マッパークラス群が自動生成され

る• symfony にて schema を定義

→ propel:build-all にてデータベースを生成

• O/R マッパーを介してデータベースのレコードを取得

Page 9: symfonyの始め方
Page 10: symfonyの始め方

symfony を始める 4 つのポイント

• 基本的な symfony コマンドを覚える• ファイルの構成と処理を記述する場所

のルールを把握する• フォームライブラリに慣れる• O/R マッパーに慣れる

Page 11: symfonyの始め方

ポイント – symfony コマンド

• symfony generate:app app 名• symfony generate:module app 名

module 名• symfony cc• symfony propel:build-all

開発初期で頻繁に使用するのはこの 4 つ

Page 12: symfonyの始め方

ポイント – ファイル構成• /app/app 名 /modules/module 名 /

  actions/   ・・このモジュールのアクション  templates/  ・・テンプレートファイル  config/    ・・このモジュールの設定

• /lib/model/  ・・モデル /Peer クラス• /lib/form/   ・・フォームクラス

Page 13: symfonyの始め方

ポイント – フォームライブラリ

• 使いこなした方が便利。ただし他のフレームワークへの応用などがあまりきかない。

• AdminGenerator を使用する場合は、理解必須

• ウィジェット・バリデータの一覧http://www.symfony-project.org/book/forms/1_2/en/A-Widgets http://www.symfony-project.org/book/forms/1_2/en/B-Validators

Page 14: symfonyの始め方

ポイント – O/R マッパー• ( Propel に限定) 条件文の書き方がポイント• Criteria クラスの定数・メソッド

http://propel.phpdb.org/docs/api/1.3/runtime/propel-util/Criteria.html 基本的にはここにある定数・メソッドで抽出条件を作成する。

• 複雑な条件文の場合は、 Criteria::CUSTOM• さらに複雑な場合は、直接 SQL を記述して実行

し、 Peer メソッドの populateObjects を呼び出す• 速度が要求される場合や、取得結果がモデルオブジェ

クトと大幅に異なる場合は、 populateObjects せずに、 PDO で直接レコードをフェッチする

Page 15: symfonyの始め方

Symfony 開発のルーティン(マクロ)

1. データ構造を大まかに設計2. URL 構造と画面遷移を大まかに設計3. 実装(ミクロなルーティン)

  どういった URL で何を見せるのかを先に設計し、それに合わせてモジュールを作成していく。

Page 16: symfonyの始め方

Symfony 開発のルーティン(ミクロ)

1. 設置・最初の app を生成、データベース接続情報の設定

2. schema.yml にスキーマを記述3. propel:build-all4. モジュールを生成5. モジュール内のアクション・テンプレ

ートを編集

以下 2 ~ 5 の繰り返し

Page 17: symfonyの始め方

その他の便利な機能• AdminGenerator• タスク• テスト• プラグイン