タグ

Symfony2に関するuechocoのブックマーク (51)

  • Templating Engines in PHP |Articles - Fabien Potencier

    This blog post is not for the faint-hearted! Some people will strongly disagree with me and some others will probably want to kill me at the upcoming Zend Conference. And if starting an argument in the comments can help you feel better, please feel free to do so. If you want to have a more advanced discussion on this topic, vote for my talk at the Zend UnConference. So, you think PHP is a templati

    uechoco
    uechoco 2010/12/13
    テンプレートエンジン、比較
  • 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
    バンドル
  • Symfony2 プロジェクトの始め方 (symfony-bootstrapper) - バリバリ日記II

    新しい Symfony2 のプロジェクトを作り始めよう!と思ったらどんな方法があるでしょう。 1つ目は symfony-sandbox を利用する方法です。この方法はもっともお手軽ですが、不要なファイル(xml/yml/php 全種類の設定ファイル、bin、README、HelloBundle など)がいっぱいあるのが邪魔くさいというデメリットがあります。 2つ目は symfony-bootstrapper を利用する方法です。 以前は init:application というコマンドを使ってアプリケーションのひな形を自動生成することができましたが、5日前のコミット で init:application は削除されました。 しかし、これとほぼ同じタイミングで symfony-bootstrapper プロジェクトが作成され、現在のところドキュメントはありませんが、こちらを使うとアプリケーシ

    uechoco
    uechoco 2010/11/14
    symfony-bootstrapper
  • Symfony2のいいところ - ゆっくり*ゆっくり

    ちょっと仕事が行き詰ったので、Symfony2のいいなーと思うところでも書いて頭をリフレッシュしよう。 シンプルなアーキテクチャ DIコンテナ Twig組み込み アクションの戻り値がResponseオブジェクト プレーンなPHPオブジェクト Namespace ぱっと思いつくのはこのあたりですかね。 シンプルなアーキテクチャ とにかくFilterがなくなるのがとてもうれしいです。Symfony2の流れってとてもシンプルで Kernelを起動 Bundleの登録 Containerの初期化 各Bundleの起動 BundleごとにContainerの拡張など (Requestの生成) HttpKernelがRequestのハンドリング RouterがRequestをパース route情報を元にControllerの特定 Controllerの実行 ビューのレンダリング レンダリング結果をRe

    Symfony2のいいところ - ゆっくり*ゆっくり
    uechoco
    uechoco 2010/11/14
    まとめ