Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

symfonyの中を見る

action/ controller/ filter/ mailer/ storage/ vendor/

addon/ database/ form/ plugin/ task/ view/

autoload/ debug/ generator/ plugins/ test/ widget/

cache/ escaper/ helper/ request/ user/ yaml/

command/ event_dispatcher/ i18n/ response/ util/

config/ exception/ log/ routing/ validator/

symfonyの機能の多さは数あるPHPフレームワークの中でも随一です!

libディレクトリ以下には好きなようにディレクトリを作成できます。

sfApplicationConfiguration

symfonyのディレクトリ構成

自己紹介

今回は説明しませんでしたが、これらのクラス群を

うまく繋いでいるのがevent_dispatcherです。

ソースを読んでいて、$this->dispatcherという変数が

あった場合は大体event_dispatcherを利用しています。

小川 雄大(おがわ かつひろ)

アシアル株式会社

twitter:fivestr

event_dispatcherを理解することで、

symfonyの理解を深め、symfonyでできることが

ぐっと増えます。

http://d.hatena.ne.jp/Fivestar

これらの中身をざっくばらんに紹介していきます

ご清聴ありがとうございました

アシアル株式会社 小川雄大

http://d.hatena.ne.jp/Fivestar/

command

widget

action

storage

plugins

util

debug

i18n

filter

symfonyコマンドの制御を行うクラス

セッションを管理するクラス

フォーム用のウィジェットクラス

アクション関連のクラス

symfonyがデフォルトで含んでいるプラグイン

様々なユーティリティクラス

Webデバッグツールバーなどのデバッグ情報を扱うクラス

国際化関連のクラスやデータファイル

アプリケーションのフローを制御するクラス

sfActionの親クラスがsfComponentです。

アプリケーションが呼び出されると、

これらのフィルターが順番に実行されます。

開発環境で右上に出てくる、

Webデバッグツールバーを制御する

クラスが含まれています。

コマンドの引数などの制御や、

コマンドの出力結果に色をつけるなどを

行うクラスが含まれています。

他のディレクトリに属さない

ユーティリティクラスが

格納されています。

forwardを行った際などは新しいアクションクラスの

インスタンスが生成されますが、それらは

sfActionStackに格納されます。

国際化に関するクラスです。

  • sfAction
  • sfActionStack
  • sfActionStackEntry
  • sfActions
  • sfComponent
  • sfComponents

今回の内容

アクションの読み込みはsfExecutionFilterで

行われます。

フォームで利用するウィジェットです。

  • sfBasicSecurityFilter
  • sfCacheFilter
  • sfCommonFilter
  • sfExecutionFilter
  • sfFilter
  • sfFilterChain
  • sfRenderingFilter

実際のコマンドの内容はtaskになります。

とても重要なクラス、

これらのフィルターはsfFilterChainによって

管理されています。

セッションを管理するクラスです。

MySQLなどを利用することも可能です。

これらはインスタンス化されたのち、

userクラスの内部に渡されます。

symfony 1.4では

DoctrineとPropelを扱うプラグインが

含まれています。

これにより、好きなORMを選択して

利用可能です。

Webデバッグツールバー上に出てくる

ログや処理時間などの情報はそれぞれ

sfWebDebugPanelというクラスになります。

クラス以外にも、基本的な言語の

データが含まれています。

  • sfBrowser
  • sfCallable
  • sfContext
  • sfFinder
  • sfNamespacedParameterHolder
  • sfToolkit
  • sfBrowserBase
  • sfClassManipulator
  • sfDomCssSelector
  • sfInflector
  • sfParameterHolder

sfContext

フィルターは設定ファイルで追加や順番変更が

可能です。

が含まれています。

symfony全体のディレクトリ構成を把握する!

addon

ページャーなど

config

アプリケーションの設定クラスや、

設定ファイルを読み込むためのクラス、

設定ファイルのベースとなるファイル

task

escaper

とりあえずsfPagerが入ってます

validator

log

yaml

request

form

symfonyコマンドから利用可能する処理の実態となるクラス

オブジェクトをラッピングしてエスケープ処理を行うためのクラス

フォーム用のバリデータクラス

ログ出力に関連するクラス

リクエストクラス

フォームクラス

YAMLファイルのローダー/ダンパー

Configuration

それ以外は特に見る必要はないと思います。

ConfigHandler

sfProjectConfiguration

設定ファイルを読み込んで処理を行うクラスです。

symfonyではテンプレートに変数を渡す際に、

これらのEscaperオブジェクトでラッピングされます。

そして、最終的な出力結果に対してhtmlspecialcharsなどの

エスケープ処理を行ってくれるようになります。

全ての値がデフォルトでエスケープされている感覚で

変数を利用することが可能になっています。

symfonyコマンドを実行する際の

様々な処理の実態となるクラスです。

sfPluginConfiguration

実際には設定ファイルを毎回読み込むことはせず、

一旦PHPファイルに変換します。

変換したファイルの出力先はcacheディレクトリです。

様々なログ出力に関するクラスです。

特別なログ出力したい場合は、

sfLoggerInterfaceを実装したクラスを

自前で作ることも可能です。

プロジェクトやアプリケーションの設定を行うクラスです。

ヘルパーの読み込みはsfApplicationConfigurationから

行います。

  • sfOutputEscaper
  • sfOutputEscaperGetterDecorator
  • sfOutputEscaperObjectDecorator
  • sfOutputEscaperArrayDecorator
  • sfOutputEscaperIteratorDecorator
  • sfOutputEscaperSafe

設定ファイル以外にも、運用環境では

コアクラスを1つのファイルにまとめて

キャッシュする、

sfCompileConfigHandlerというクラスなども

あります。

リクエストを扱うクラスです。

$_SERVERなどもこのリクエストクラスから

参照します。

フォームクラスが含まれています。

フォームで利用するバリデータクラスです。

環境(prod/devなど)の情報、デバッグモードかどうか、

プロジェクトディレクトリのパスなどの情報を保持します。

  • sfAggregateLogger
  • sfFileLogger
  • sfLoggerInterface
  • sfNoLogger
  • sfVarLogger
  • sfConsoleLogger
  • sfLogger
  • sfLoggerWrapper
  • sfStreamLogger
  • sfWebDebugLogger

エスケープしたくない場合、これらのオブジェクトにある

getRawValue()メソッドを実行することで、

元々のオブジェクトが取得可能です。

YAMLファイルのロードや

ダンプを行うクラスです。

sfTaskクラスを継承して自前のタスクを

作ることも可能です。

これのためのgenerate:taskというタスクが

用意されています。

sfOutputEscaperSafeはエスケープ対象に

しないようにするためのオブジェクトです。

この他にも、app.ymlやsettings.ymlの情報を保持するsfConfigクラスや、

このディレクトリの中にあるconfigディレクトリには

設定ファイルのベース情報が入っています。

参考:

http://d.hatena.ne.jp/Fivestar/20090722/1248227287

autoload

クラスのオートロードを行うクラス

test

vendor

response

event_dispatcher

controller

generator

ファンクショナルテストで利用するクラス

symfony以外のライブラリ

symfonyではプロジェクトやアプリケーションのディレクトリの中に

lib というディレクトリが作成されるようになっています。

mailer

レスポンスクラス

様々な処理の中に、処理を組み込むためのクラス

クラスなどの自動生成に関連するクラス

コントローラクラス

SwiftMailerをsymfonyで扱うためのクラス

libディレクトリ内に

リクエストと対をなす、レスポンスクラスです。

クラス名.class.php

ファンクショナルテストとは、

アクションのテストを自動化するための仕組みです。

http://blog.asial.co.jp/670

  • lime
  • swiftmailer

ブラウザをエミュレーションするようなイメージです。

という形式でファイルを置いておくと、自分でrequireしなくても

symfony側が自動的にクラスファイルを読み込んでくれます。

話すと長くなるのですが...

レスポンスとして返すヘッダー情報などは

このレスポンスクラスに指定します。

HTTPのステータスコードなども保持しています。

  • default/
  • sfController
  • sfFrontWebController
  • sfWebController

アクションを制御するコントローラクラスです。

アクション実行中に発生した例外は

sfWebControllerクラスが捕捉し、

エラー画面を出力します。

モデルなどの自動生成を行うためのクラスです。

Propelでモデルを生成するときなどに利用されているようです。

symfony 1.3/1.4ではSwiftMailerという

メール送信ライブラリが含まれています。

このSwiftMailerをsymfonyに合わせて

少しカスタマイズしたクラスが

sfMailerです。

lime: Unitテスティング

オブザーバパターンの実装で、

様々な箇所で、好きなコールバック関数を

実行できるようにするための仕組みです。

テストを記述するための様々なクラスが

格納されています。

Cookieもこのクラスに指定します。

swiftmailer: メール送信

SwiftMailer本体はvendorに含まれています。

超重要です。

view

user

routing

cache

database

ビュー出力に関するクラス

helper

アプリケーションにアクセスしてきたユーザを表すクラス

exception

ルーティングクラス

キャッシュを行うためのクラス

plugin

データベースを扱うための基本的なクラス

テンプレート側で利用する便利な関数群

例外クラス

プラグインのインストールなどに関連するクラス

http://blog.asial.co.jp/535

ヘルパーは関数群です。

アプリケーションにアクセスしている

ユーザを表すオブジェクトです。

ユーザオブジェクトの内部にはセッションを

管理するstorageクラスを持っています。

symfonyの例外クラスがまとまっています。

実際にはSPL例外が利用されることも多いです。

アクションからテンプレートを出力する際の

制御を行うクラスです。

通常、sfPHPViewが利用されます。

変数をescaperでラッピングする処理なども

ここで行われます。

  • sfPHPView
  • sfPartialView
  • sfView
  • sfViewCacheManager
  • sfViewParameterHolder

キャッシュはrouting、i18n、

viewで利用されます

databases.ymlに記述した接続情報などを管理するクラス群です。

ここにあるクラスを意識して利用することはあまりないと思います。

  • sfAPCCache
  • sfEAcceleratorCache
  • sfFunctionCache
  • sfNoCache
  • sfXCacheCache
  • sfCache
  • sfFileCache
  • sfMemcacheCache
  • sfSQLiteCache

プラグインに関連するコマンドを実行した際に

制御を行うクラスが格納されています。

頻繁に利用するのは

・UrlHelper

・AssetHelper

・PartialHelper

です。基本的にこれらは最初から

読み込まれるようになっています。

  • AssetHelper
  • DateHelper
  • EscapingHelper
  • I18NHelper
  • NumberHelper
  • TagHelper
  • UrlHelper
  • CacheHelper
  • DebugHelper
  • HelperHelper
  • JavascriptBaseHelper
  • PartialHelper
  • TextHelper

ルーティングに関連するクラスです。

また、dataというディレクトリに

例外発生時に表示するテンプレートが

格納されています。

この他にも、権限や認証の設定などを

格納することが可能です。

Learn more about creating dynamic, engaging presentations with Prezi