Skip to content
Caution: You are browsing the legacy symfony 1.x part of this website.

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

Language
ORM

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

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

symfonyとは?

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

コーディングを始める前に、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によってサポートされます。 ユーザーcultureはユーザーの言語と国を決定します。 これはユーザー自身もしくはURLに埋め込むことで定義できます。

テスト

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

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

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

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

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

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

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

プラグイン

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

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

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

タスク

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

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

またお会いしましょう

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

This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.