Issei.M's Techlog

Web/iOS エンジニアの僕が技術関連のメモ等をつらつらと。主に Symfony について書いています。

[Symfony] 最近のSymfony Standard Editionのディレクトリ構成

この記事はSymfony Advent Calendar 2015 15日目の記事です(当日0時過ぎに枠が空いてる事に気づいて急遽書きました。)。前回は@tai2さんのDoctrineのベストプラクティス(Doctrine 2 documentationから抜粋翻訳)でした。

既にお使いの方はご存知かと思いますが、Symfony Standard Editionのディレクトリ構成がSymfony 3.0になって少し変わりました。

変更点をまとめるとこんな感じです。

  • app/cacheapp/logsがそれぞれvar/cachevar/logsに移動
  • app/consolebin/consoleに移動
  • bootstrap.php.cacheSymfonyRequirements.phpがappではなくvarディレクトリに生成されるようになった
  • app/phpunit.xml.distがプロジェクトルートに移動
  • プロジェクトルートにtestsディレクトリができ、Testsを接頭辞とするPSR-4の名前空間ができた
  • src/AppBundle/Teststests/AppBundleに移動
  • その関係でテストのnamespaceがAppBundle\TestsからTests\AppBundleに移動

因みにこのディレクトリ構成、SensioDistributionBundleが3.0以降であれば、Symfony 2系でも実現可能です。composer.jsonのextraに下記を定義しましょう:

"extra": {
    "symfony-bin-dir": "bin",
    "symfony-var-dir": "var",
    ...

定義したらcomposerのScriptを起動します:

$ composer run-script post-install-cmd

実際にGitHubに公開してみたので気になる方は要チェック!(2系と3系の差分はこちら

appディレクトリがすっきりするので、個人的にvarディレクトリのアイディアが気に入ってます。

おわり

明日は@teematsuさんのSymfony 2.8のAuto WiringとPHP-DIです。乞うご期待!