今日で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の設定ファイルは異なるレベルで定義可能でこれらの大部分が環境を認識します:
app.yml
cache.yml
databases.yml
factories.yml
generator.yml
routing.yml
schema.yml
security.yml
settings.yml
view.yml
大部分の設定ファイルはYAMLフォーマットを使います。
デフォルトのディレクトリ構造を利用してレイヤーごとにアプリケーションをわける代わりに、これらを機能ごとにわけて、プラグインにまとめることができます。 デフォルトのディレクトリ構造に関して、ニーズに応じてカスタマイズすることもできます。
デバッグ
ロギングからWebデバッグツールバー、 重大な例外まで、symfonyは開発者が問題を速くデバッグするために便利で助けになるツールをたくさん提供します。
symfonyの主要なオブジェクト
symfonyフレームワークはWebプロジェクトで頻度の高いニーズを抽出するコアオブジェクトを精選して提供します: リクエスト、レスポンス、ユーザー、ロギング、ルーティングとビューキャッシュマネージャー
これらのコアオブジェクトはsfContext
オブジェクトによって管理され、ファクトリをとおしてこれらを設定できます。
ユーザーオブジェクトはユーザーの認証、認可、flashとセッションでシリアライズされる属性を管理します。
セキュリティ
symfonyフレームワークはXSSとCSRFに対して組み込みの防御機能を持ちます。 これらの設定はコマンドラインから、もしくは設定ファイルを編集することで設定できます。
フォームフレームワークは組み込みのセキュリティ機能も提供します。
フォーム
Web開発者にとってフォームの管理がもっとも退屈なタスクの1つなので、symfonyはフォームサブフレームワークを提供します。 フォームフレームワークはたくさんのウィジェットとバリデーターを搭載しています。
フォームサブフレームワークの強みの1つはテンプレートがとても簡単にカスタマイズ可能であることです。
Doctrineを利用する場合、フォームフレームワークはモデルに基づいて フォームとフィルターを生成する方法も簡単になります。
国際化とローカライゼーション
ICU標準のおかげで、国際化とローカライゼーションはsymfonyによってサポートされます。 ユーザーcultureはユーザーの言語と国を決定します。 これはユーザー自身もしくはURLに埋め込むことで定義できます。
テスト
ユニットテストのために使われるlimeライブラリはたくさんのテスト用のメソッドを提供します。
専用のデータベースと専用のフィクスチャから Doctrineオブジェクトもテストできます。
機能テストは
sfFunctionalTest
クラスで記述され、ブラウザーシミュレーターを使い、symfonyはテスターをとおして
コアオブジェクトのイントロスペクトができます。
リクエストオブジェクト、レスポンスオブジェクト、ユーザーオブジェクト、現在のフォームオブジェクト、キャッシュレイヤーと
Doctrineオブジェクト
のためのテスターが存在します。
ユニットテストに関して、機能テストは1つづつもしくはまとめて実行できます。
すべてのテストを一緒に実行することもできます。
プラグイン
symfonyフレームワークはWebアプリケーションのための基盤のみを提供しより多くの機能を追加するためにプラグインを頼りにします。
このチュートリアルでは、sfGuardPlugin
、sfFormExtraPlugin
、sfTaskExtraPlugin
を話しました。
インストールの後でプラグインをアクティベートしなければなりません。
プラグインはsymfonyの公式サイトに寄付する最高の方法です。
タスク
symfony CLIはたくさんのタスクを提供し、もっとも便利なものはこのチュートリアルで検討しました:
app:routes
cache:clear
configure:database
generate:project
generate:app
generate:module
help
i18n:extract
list
plugin:install
plugin:publish-assets
project:deploy
doctrine:build-all
doctrine:build-all-reload
doctrine:build-forms
doctrine:build-model
doctrine:build-sql
doctrine:data-load
doctrine:generate-admin
doctrine:generate-module
doctrine:insert-sql
test:all
test:coverage
test:functional
test:unit
独自タスクを作ることもできます。
またお会いしましょう
チュートリアルが終わる前に、最後にsymfonyに関して話したいことが1つあります。 symfonyはたくさんのすばらしい機能と無料のドキュメントを提供します。 しかし、オープンソースが持つもっとも貴重な資産の1つはコミュニティです。 そしてsymfonyにはもっとも面白くて活発なコミュニティの1つがあります。 プロジェクトでsymfonyを使い始めるのであれば、symfonyのコミュニティに参加することを考えてください:
- ユーザーのメーリングリストを購読する
- 公式blogのフィードを購読する
- symfonyのplanetフィードを購読する
- freenodeの#symfony IRCチャンネルに来てチャットをする
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.