[symfony] jobeetをやってみる - day24(最終回)

Day24
前回の続きです。公式ドキュメントはこちら。
いよいよ最終回。最後は総まとめ(おさらい)のようです。ざっと読んで部分的に超訳していきます。
What is symfony?
symfonyは分離したサブフレームワークの集まりであり、フルスタックのMVCフレームワーク。
コーディングの前に、symfonyの歴史と哲学を読んで、必須条件を確認し、check_configuration.phpスクリプトで環境をチェックしよう。
ようやくsymfonyをインストール。symfonyをアップグレードする方法もOKだね。デプロイメント用のツールも提供してまっせ。
The Model
Modelの部分はPropelやDoctrineを活用することができる。DB定義でobjects, forms, filtersが生成される。DBのテーブル生成用のSQLも生成される。
DB設定はタスクを使うか、設定ファイルを編集すればOK。初期データはfixtureファイルで挿入できる。fixturesファイル内では動的にデータを生成することもできる。
The View
デフォルトではViewの部分は、シンプルなPHPファイルをテンプレートとして使用する。テンプレートではヘルパーを使える。
テンプレートはレイアウトによって装飾され、ページのヘッダーやフッターなどを取り除くことができる。slotやpartial、componentを使い、再利用性を高めることができる。
キャッシュ機能を使えば、ページ全体や、ページの一部分、ロジック部分のみをキャッシュすることができる。キャッシュを手動で削除することも可能。
The Controller
Controllerはフロントコントローラとアクションによって管理される。タスクでシンプルなモジュールやCRUDモジュール、adminモジュールなどを生成できる。
adminモジュールを使えば、コーディングすること無く、十分に機能的なアプリケーションを作ることができる。
routingサブフレームワークを使用し、美しいURLを生成する。Webサービスの実装を容易にするため、様々なフォーマットをサポートする。独自のフォーマットを作成することも可能。
アクションでは、他のアクションにforwardしたり、redirectすることができる。
Configuration
異なる環境用に、異なる環境設定を簡単に行える。独自の環境を作成することも可能。
設定ファイルは様々なレベル(プロジェクト、アプリケーション、モジュール)で定義でき、多くは環境ごとの設定を認識する。
設定ファイルの多くはyamlフォーマットを使用している。
デフォルトのディレクトリ構造を使用する代わりに、機能ごとに整理しプラグイン化することもできる。必要に応じて、ディレクトリ構造をカスタマイズすることもできる。
Debugging
ログ機能やWebデバッグツールバー、分かりやすいExceptionなど、多くの有用なツールを提供し、デバッグを容易にしている。
Main symfony Objects
非常に少ないコアオブジェクトを提供し、Webプロジェクトで頻発する需要を要約している:the request, the response, the user, the logging, the routing, and the view cache manager。
これらのコアオブジェクトはsfContextオブジェクトによって管理され、factories.ymlによって設定されている。
userオブジェクトは認証、承認、flash、セッションにシリアライズされる属性を管理する。
Security
XSSとCSRFに対する保護機能を内蔵している。これらの設定はコマンドラインから、もしくは、設定ファイルを編集することで設定できる。
formフレームワークにも、セキュリティ機能を内蔵している。
Forms
form周りの処理は、Web開発者にとって最も退屈なタスクの一つであるため、symfonyはformサブフレームワークを提供している。formフレームワークは様々なウィジェットとバリデータとセットで提供されている。このformフレームワークの強みの一つは、テンプレートが非常にカスタマイズしやすいことだ。
PropelやDoctrineを使用していれば、モデルに基づいたformやfilterを生成することも簡単だ。
Internationalization and Localization
ICU standardのおかげで、symfonyは国際化と地域化をサポートしている。ユーザ文化によって、ユーザの言語と国が決定される。文化はユーザ自身によって、もしくは、URLに埋め込むことによって定義できる。
Tests
単体テストには、limeライブラリが使用でき、様々なテストメソッドが提供される。PropelやDoctrineのオブジェクトはテスト専用のDBやfixtureファイルでテストすることもできる。
機能テストは、sfFunctionalTestクラスを用いて書かれ、ブラウザシミュレータを使い、テスターを通して、symfonyのコアオブジェクトを調査できる。テスターには、requestオブジェクト、responseオブジェクト、userオブジェクト、current form、cache layer、Propel/Doctrineオブジェクト用のものがある。
responseとform用のデバッグツールも使用できる。
それぞれのテストは一つずつ実行することも、まとめて一気に実行することもできる。全単体テストと全機能テストをまとめて一度に実行することもできる。
Plugins
symfonyフレームワークはアプリケーションの基盤のみを提供し、プラグインでその他の様々な機能を追加できる。
プラグインはインストール後、有効にする必要がある。
プラグインはsymfonyプロジェクトへのお返しとして最良の貢献方法。
Tasks
様々なCLIタスクが提供されている。
独自のタスクを作成することもできる。
See you soon
最後に、オープンソースが持ちうる最も貴重なものの一つは、そのコミュニティだ、との記載がありました。(;∀;)イイハナシダナー。
なんとか最後までチュートリアルをやってこれました。自分で見返すと、あまり公開する必要も無いブログ記事だったなぁと思いますが、少しでも誰かのお役に立てていれば光栄です。
ここまで読んでくださった奇特な貴方に、素敵なsymfonyプロジェクトが訪れますように。
では、また!!