タグ

2010年11月17日のブックマーク (8件)

  • KernelとHttpKernel、その辺の起動順序 - しんふぉにゃん

    Symfony2で名前的に混乱しやすそうなのがKernelとHttpKernelで、 Kernelはアプリケーション全体のベースとなる HttpKernelは1つのHTTPリクエストのベースとなる という感じで、Kernelの方がベースよりです。これは説明するまでもないかもしれませんが、フロントコントローラーで一番最初に作られるAppKernelがKernelの方を継承しています。 で、ポイントはHttpKernelの初期化のあたりですが、これはDIコンテナ経由で行われます。 (※DIコンテナ自身はKernelが作ります) Kernel::handle()内部で、 <?php return $this->container->getHttpKernelService()->handle($request, $type, $raw); とコンテナ経由でHttpKernelサービスにアクセスし

    KernelとHttpKernel、その辺の起動順序 - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    Kernel、HttpKernel
  • Symfony2のconfigファイルにおけるimportsの挙動(DIのconfig) - しんふぉにゃん

    Symfony2のconfigファイルでは、別のconfigファイルをインポートすることができます。 たとえばconfig_dev.ymlでは、共通設定であるconfig.ymlを以下のようにインポートしています。 imports: - { resource: config.yml } また、config_dev.ymlをよく見ると、ルーティングの設定についても似たような記述があることが分かります。 app.config: router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } 前者のimportsで記述したresourceは、このconfigファイルの処理時点で同時にインポートされ、マージされて1つのconfigとして扱われます。 このimportsキーは、YAMLのルート階層にのみ記述できます。 そして、YAML

    Symfony2のconfigファイルにおけるimportsの挙動(DIのconfig) - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    設定ファイル
  • Doctrine2を使った開発のワークフローで悩み中 - しんふぉにゃん

    symfony 1では、ORM Designerを使ってスキーマ設計→schema.yml書き出し→モデルやDBを生成(必要に応じてマイグレーション)というワークフローでした。 こういったワークフローをDoctrine2を使った開発でもやりたいと思い、Doctrine2のコマンド等とあれこれ格闘していますが、今のところまだ「これだ」と思える方法が見つかっていません。 現状、ぶつかった問題点 ORM DesignerはDoctrine2をサポートしているが完全ではなく、リレーションの情報など、一部書き出されたYAMLが不完全 YAMLでマッピング設定を書き、doctrine:generate:entitiesでエンティティを生成すると、getter/setterなども一挙に生成できて楽、しかし問題も YAMLにフィールドを追加した場合の追加分の書き出しがうまくいかなかった(2重になったりした

    Doctrine2を使った開発のワークフローで悩み中 - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    ORM Designer
  • Symfony2のテンプレートレンダリング時の名前の指定 - しんふぉにゃん

    Symfony2でテンプレートをレンダリングする場合、以下のようにやや長い名前でテンプレートを指定します。 $this->render('HelloBundle:Hello:index.twig');この指定はコロンで区切られた3つのパーツで構成されていて、 テンプレートのあるバンドルの名前 テンプレートのあるコントローラーの名前 テンプレートファイル名(とフォーマット、レンダラー) のようになっています。 現段階ではこの様に3つのパーツで書かないとエラーになりますが、それはFrameworkBundle\Templating\EngineクラスのsplitTemplateName()メソッドで行われています。 <?php public function splitTemplateName($name, array $defaults = array()) { $parts = explo

    Symfony2のテンプレートレンダリング時の名前の指定 - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    テンプレート、Twig
  • コアのDIエクステンションでの設定を、自前のDIエクステンションで変更する - しんふぉにゃん

    まず、DIエクステンションについては以下の記事を参照 Symfony2のDIエクステンション - しんふぉにゃん このDIエクステンションですが、Symfony2コアの各バンドルごとのDIエクステンション自体を拡張するうまいやり方は今のところ分かっていないのですが、コアのDIエクステンションで行っているDIコンテナへの設定を、別のバンドルのDIエクステンションで変更する方法は分かりました。 単純なことなのですが、自分で作ったバンドルのDIエクステンションで、別のバンドルで行われている設定を変更するというだけです。 例:ビューテンプレートファイルの格納場所を変更する ビューテンプレートのファイルは、デフォルトでは以下のようなディレクトリ・ファイルになっています。 \src\Application\HelloBundle\Resources\views\Hello\index.php語で

    コアのDIエクステンションでの設定を、自前のDIエクステンションで変更する - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    DIエクステンション、設定、
  • Symfony2のDIエクステンション - しんふぉにゃん

    (まだきちんと全容をつかめていないのですが)Symfony2のDI+バンドルのシステムには「エクステンション」という機構があって、DIコンテナから得られる設定を使ってバンドルの初期化などを行えます。 これは、各バンドル内の「DependencyInjection」というディレクトリ内に、「〜Extension.php」というファイル名で、Symfony\Bundle\FrameworkBundle\DependencyInjection\Extensionを継承したクラスを作って実装します。 FrameworkExtensionのエイリアスは「app」 エクステンションにはエイリアスをつけることができるようで、エクステンションの「getAlias()」でエイリアス名を返せば、それがエイリアス名になります。 ちなみにFrameworkExtensionはエイリアスが「app」になっていました

    Symfony2のDIエクステンション - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    設定ファイル、app.config
  • Symfony2で、キャッシュディレクトリへ書き出している処理 - しんふぉにゃん

    DIコンテナを使っているのに、キャッシュディレクトリへの書き出しはそれぞれのコンポーネントが別々に直接ファイルを書き出しているのは何とかしたいなと思いつつ・・・。(Symfony Componentsのコンポーネントで、DIコンテナがなくても動作するように設計されているから、仕方ないといえば仕方ないのですが) Kernel.php(Symfony\Component\HttpKernel\Kernel.php) writeCacheFile Router.php(Symfony\Component\Routing\Router.php) writeCacheFile Environment.php(twig\lib\Twig\Enavironment.php) writeCacheFile Store.php(Symfony\Component\HttpKernel\Cache\Store

    Symfony2で、キャッシュディレクトリへ書き出している処理 - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    キャッシュ、書き込み処理、箇所
  • バンドルを作るコマンド - しんふぉにゃん

    $ php app/console init:bundle (名前空間) # 例 $ php app/console init:bundle Application\\HelloBundle $ php app/console init:bundle Bundle\\TestBundle init:bundleの後ろのパラメーターは名前空間。名前空間に対応するディレクトリにバンドルの雛形が作成される。

    バンドルを作るコマンド - しんふぉにゃん
    uechoco
    uechoco 2010/11/17
    バンドル