somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Symfony2】バンドルの登録とKernelへの登録

バンドルの登録とKernelへの登録のメモです。

自動更新OFF

バンドル作成時に、KernelとRoutingの自動更新をせずにgitへコミットしました。

Confirm automatic update of your Kernel [yes]? no
Enabling the bundle inside the Kernel: FAILED
Confirm automatic update of the Routing [yes]? no
Importing the bundle routing resource: FAILED

自動更新ON

バンドル作成時にKernelとRoutingの自動更新をした場合、以下の2つのファイルが更新されます。

  • app\AppKernel.php
  • app\config\routing.yml

更新内容は、自動更新をしない場合に表示されたメッセージどおりです。

  The command was not able to configure everything automatically.
  You must do the following changes manually.


- Edit C:\work\programming\php\Symfony2\app\AppKernel.php
  and add the following bundle in the AppKernel::registerBundles() method:

    new My\BlogBundle\MyBlogBundle(),

- Import the bundle's routing resource in the app main routing file:

    MyBlogBundle:
        resource: "@MyBlogBundle/Resources/config/routing.yml"
        prefix:   /

ルーティング

バンドルごとのルーティングだけでなく、プロジェクト全体のルーティングファイルも存在するようです。

ただし、パターンではなくバンドルのルーティングファイルを読み込んでいるようです。さらに、バンドルごとのルーティングが被らないように接頭辞をつけているようにです。あとで調べてみたいと思います。

AppKernel.php

そもそも、Kernelとは?

Symfony2のコアとなる部分です。フロントコントローラから生成されています。

<?php

require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';

use Symfony\Component\HttpFoundation\Request;

$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
$kernel->handle(Request::createFromGlobals())->send();

実際に使用するKernelは、Kernelを継承したAppKernelです。AppKernelには、Symfony2に必要なバンドルと今回追加したMyBlogBundleを登録しています。

また、Kernel生成時には環境とデバッグモードを指定します。その後、クラスを読み込み、これらのバンドルを使用して最終的にレスポンスを返すようです。