Caution: You are browsing the legacy 1.x part of this website.
This version of symfony is not maintained anymore. If some of your projects still use this version, consider upgrading.

23日目: 別の視点から symfony を見る

Jobeet

今日で symfony のすばらしい世界の旅行は最後です。23日間、デザインパターンから強力な組み込み機能までの具体例で symfony を学びました。あなたはまだ symfony マスターではありませんが、自信をもって symfony アプリケーションの開発を始めるために必要な知識はすべてあります。

Jobeet チュートリアルのまとめとして、別の視点からフレームワークを見てみましょう。Jobeet は忘れてこの3週間に学んだすべての機能を思い出しましょう。

symfony とは?

symfonyフレームワークはフルスタックの MVC フレームワーク (Model、View、Controller) を形成する疎結合されたサブフレームワークの集まりです。

コーディングを始める前に、symfony の歴史と哲学を読む時間をとります。

それから、フレームワークの前提要件を確認し設定を検証するためにcheck_configuration.phpスクリプトを使います。

最後に、symfony をインストールします。しばらくしてから symfony の最新バージョンにアップグレードします。

symfony はデプロイ作業を楽にするツールも提供します。

Model

symfony の Model 部分の作業は Doctrine ORM の助けを借りて行うことができます。 データベースの記述に基づいて、オブジェクトフォームフィルタ用のクラスが生成されます。Doctrine はデータベースのテーブルを作成するために使用される SQL 文を生成します

データベースのコンフィギュレーションはタスクもしくは設定ファイルを編集することで行うことができます。コンフィギュレーションに加えて、フィクスチャファイルのおかげで、初期データを投入することもできます。これらのファイルを動的なものにすることもできます。

Doctrine のオブジェクトも簡単に国際化できます。

View

デフォルトでは、MVC アーキテクチャの View レイヤーはテンプレートとしてプレーンな PHP ファイルを使います。

URL もしくはリンクを作成するなどの頻繁に行われるタスクのためにテンプレートはヘルパーを使います。

ページのヘッダーとフッターを抽出するためにテンプレートはレイアウトによってデコレートされます。 ビューの再利用性を高めるために、スロットパーシャルコンポーネントを定義できます。

開発を加速するために、ページ全体アクションだけ、もしくはパーシャルもしくはコンポーネントだけをキャッシュするためにキャッシュサブフレームワークを利用できます。手動でキャッシュを削除することもできます。

Controller

Controller の部分はフロントコントローラアクションによって管理されます。

タスクはシンプルなモジュールCRUD モジュールを作成する、もしくはモデルクラス用に十分に実用的な admin モジュールを生成するために使うことができます。

admin モジュールによってコードをまったく書かなくても十分な機能をもつアプリケーションを作ることができます。

Web サイトの技術的な実装を抽出するために、symfony はプリティ URL を生成するルーティングサブフレームワークを利用します。Web サービスの実装を簡単にするために、symfony は複数のフォーマットをネイティブでサポートします。独自フォーマットを作ることもできます。

アクションを別のアクションにフォワード、もしくはリダイレクトできます。

コンフィギュレーション

symfony フレームワークでは異なる環境に対して異なるコンフィギュレーションを用意するのが楽です。環境はコンフィギュレーションの集まりで開発もしくは運用サーバーで異なるふるまいを可能にします。新しい環境を作ることもできます。

symfony の設定ファイルは異なるレベルで定義可能でこれらの大部分が環境を認識します:

大部分の設定ファイルは YAML フォーマットを使います。

デフォルトのディレクトリ構造を利用してレイヤーごとにアプリケーションをわける代わりに、これらを機能ごとにわけて、プラグインにまとめることができます。デフォルトのディレクトリ構造に関して、ニーズに応じてカスタマイズすることもできます。

デバッグ

ロギングからWebデバッグツールバー重大な例外まで、symfony は開発者が問題を速くデバッグするために便利で助けになるツールをたくさん提供します。

symfony の主要なオブジェクト

symfony フレームワークは Web プロジェクトで頻度の高いニーズを抽出するコアオブジェクトを精選して提供します: リクエストレスポンスユーザーロギングルーティングメーラー、とビューキャッシュマネージャです。

これらのコアオブジェクトは sfContext オブジェクトによって管理され、ファクトリをとおしてこれらを設定できます。

ユーザーオブジェクトはユーザーの認証認可flash とセッションでシリアライズされる属性を管理します。

セキュリティ

symfony フレームワークは XSSCSRF に対して組み込みの防御機能を持ちます。これらの設定はコマンドラインから、もしくは設定ファイルを編集することで設定できます。

フォームフレームワークは組み込みのセキュリティ機能も提供します。

フォーム

Web 開発者にとってフォームの管理がもっとも退屈なタスクの1つなので、symfony はフォームサブフレームワークを提供します。フォームフレームワークはたくさんのウィジェットバリデータを搭載しています。

フォームサブフレームワークの強みの1つはテンプレートがとても簡単にカスタマイズ可能であることです。

Doctrine を利用する場合、フォームフレームワークはモデルに基づいて フォームとフィルタを生成する方法も簡単になります。

国際化とローカライゼーション

ICU 標準のおかげで、国際化ローカライゼーションは symfony によってサポートされます。ユーザーカルチャ はユーザーの言語と国を決定します。これはユーザー自身もしくは URL に埋め込むことで定義できます。

テスト

ユニットテストのために使われる lime ライブラリはたくさんのテスト用のメソッドを提供します。

専用のデータベースと専用のフィクスチャから Doctrine オブジェクトもテストできます

ユニットテストは一度に1つもしくはまとめて実行できます。

機能テストsfFunctionalTestクラスで記述され、ブラウザシミュレータを使い、symfony はテスターをとおして コアオブジェクトのイントロスペクトができます。リクエストオブジェクトレスポンスオブジェクトユーザーオブジェクト現在のフォームオブジェクトキャッシュレイヤーDoctrine オブジェクト のためのテスターが存在します。

レスポンスフォーム用のデバッグツールも利用できます。

ユニットテストに関して、機能テストは1つづつもしくはまとめて実行できます。

すべてのテストを一緒に実行することもできます。

プラグイン

symfony フレームワークは Web アプリケーションのための基盤のみを提供しより多くの機能を追加するためにプラグインを頼りにします。このチュートリアルでは、sfGuardPluginsfFormExtraPluginsfTaskExtraPlugin を話しました。

インストールの後でプラグインをアクティベートしなければなりません。

プラグインは symfony の公式サイトに寄付する最高の方法です。

タスク

symfony CLI はたくさんのタスクを提供し、もっとも便利なものはこのチュートリアルで検討してきました:

独自のタスク も作ることができます。

またお会いしましょう

練習して学ぶ

symfony フレームワークには、どのソフトウェアのピースと同じように、学習曲線があります。学習プロセスにおいて、最初のステップはこの本のように実際の例から学ぶことです。2番目のステップは練習です。練習に勝るものはありません。

それが今日始められることです。ToDo リストマネージャー、シンプルなブログ、時間もしくは通貨コンバーター、などなんらかの価値を提供する Web プロジェクトを考えてください。1つ選び今日知っている知識で実装を始めてください。異なるオプションを学ぶためにタスクのヘルプメッセージを使い、symfony によって生成されるコードを眺め、Eclipse のような、PHP の自動入力補完があるテキストエディタを使います。symfonyによって提供されるすべてのコンフィギュレーションを見るためにリファレンスガイドを参照します。

symfony をより学ぶために自由にできるすべての無料の素材を楽しんでください。

コミュニティ

チュートリアルが終わる前に、最後に symfony に関して話したいことが1つあります。symfony はたくさんのすばらしい機能と無料のドキュメントを提供します。しかし、オープンソースがもつもっとも貴重な資産の1つはコミュニティです。そして symfony にはもっとも面白くて活発なコミュニティの1つがあります。プロジェクトで symfony を使い始めるのであれば、symfony のコミュニティに参加することを考えてください: