search
LoginSignup
0

posted at

updated at

フレームワークの設定をする、"Framework Bundle"

Symfony Component Advent Calendar 2022の25日目の記事です。

最初に

SymfonyはPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Symfony上だけで動作するのではなく、他のPHPフレームワークやアプリケーションでも動作している強力なものが揃っています。

今回はそれらの中から、役立ちそうなもの・お薦めしたいものを紹介していきたいと思います。

※記事内ではautoloadのインポートは省略します。

フレームワークの設定をする、"Framework Bundle"

Framework Bundleは、、フレームワークの設定するためのコンポーネントです。

フレームワークの設定をするものであって、フレームワーク自体ではありません。

インストール

composer require symfony/framework-bundle

フレームワーク設定する

Symfonyは、すでにご存知の通りたくさんのコンポーネントから成り立っています。どのようにルーティングしていくか、翻訳をどうするか、セッションはどう管理するかなどをひとつずつ設定していくのは大変です。Framework Bundleはフレームワークとして動作するために必要な主要な設定を定義するために利用します。

config/packages/framework.yaml
# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
    secret: '%env(APP_SECRET)%'
    #csrf_protection: true
    http_method_override: false

    # Enables session support. Note that the session will ONLY be started if you read or write from it.
    # Remove or comment this section to explicitly disable session support.
    session:
        handler_id: null
        cookie_secure: auto
        cookie_samesite: lax
        storage_factory_id: session.storage.factory.native

    #esi: true
    #fragments: true
    php_errors:
        log: true

when@test:
    framework:
        test: true
        session:
            storage_factory_id: session.storage.factory.mock_file

変更が必要な場合は、framework.yamlに設定すれば機能を変更してくれます。
設定できる項目はこちらです。
また、各種コンポーネントインストール時に作成された設定ファイルにもframework:キーを指定して以降に定義すれば、反映されます。

このFramework Bundleにより、必要な設定が全て反映され、わたしたちの知っているSymfonyとして動作します。

便利なクラスやアトリビュートの提供

Framework Bundleは設定のほか、フレームワークとして利用する際に便利なクラスやアトリビュートを用意しています。
Controllerで普段使うメソッドを備えた抽象クラスAbstractController、機能テストを行うときに便利なKernelTestCaseWebTestCase、指定のURLにアクセスさせるか決めるサービスを選ぶ#[AsRoutingConditionService]なんていうアトリビュートも用意しています。

まとめ

今回は、Framework Bundleを紹介しました。設定とその反映を行うコンポーネントですが、Symfonyにとっては非常に大事なコンポーネントになります。

アドベントカレンダーのまとめ

25日分書き切ることができました。それぞれのコンポーネントは正直基本中の基本な使い方程度の紹介しかできていないです。
詳しくは公式ドキュメントを見ていただきたいのですが、結構かゆいところに手の届くコンポーネントばかりです。
Symfony以外でも動作するものが多いので、ぜひぜひ使ってみていただけたらなと思います。

今回25個のコンポーネントを紹介してきましたが、じつはSymfonyのコンポーネントは全部で207あります。(2022年12月25日現在)

来年もできそうですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0