|
| 1 | +.. index:: |
| 2 | + single: Bundle; Dependencies |
| 3 | + |
| 4 | +How to Use Bundle Dependencies to Load other Bundles |
| 5 | +==================================================== |
| 6 | + |
| 7 | +.. versionadded:: 2.7 |
| 8 | + Support for bundle dependencies was introduced in Symfony 2.7. |
| 9 | + |
| 10 | +When working on your own bundle(s), you'll sometimes have the need to reuse |
| 11 | +other bundles, either by just requiring, overriding or inheriting from them. |
| 12 | + |
| 13 | +While Composer takes care about making sure these dependencies are loaded, |
| 14 | +you'll also need to enable these bundles in the kernel. |
| 15 | + |
| 16 | +If your bundle is meant to be reused, bundle dependencies will complicate |
| 17 | +your installation documentation. This makes installation and upgrading your |
| 18 | +bundle more tedious for your users. |
| 19 | + |
| 20 | +You can avoid this by specifying your dependencies. This will make sure that |
| 21 | +they are loaded in the kernel. It'll also make sure they are loaded *before* |
| 22 | +your own bundle, to make sure you can extend them. |
| 23 | + |
| 24 | +Specifying dependencies is accomplished by implementing the |
| 25 | +:class:`Symfony\\Component\\HttpKernel\\Bundle\\BundleDependenciesInterface`:: |
| 26 | + |
| 27 | + // src/CacheBundle/CacheBundle.php |
| 28 | + namespace CacheBundle; |
| 29 | + |
| 30 | + use Symfony\Component\HttpKernel\Bundle\Bundle; |
| 31 | + use Symfony\Component\HttpKernel\Bundle\BundleDependenciesInterface; |
| 32 | + |
| 33 | + class CacheBundle extends Bundle implements BundleDependenciesInterface |
| 34 | + { |
| 35 | + public function getBundleDependencies() |
| 36 | + { |
| 37 | + return array('FOS\HttpCacheBundle\FOSHttpCacheBundle'); |
| 38 | + } |
| 39 | + } |
| 40 | + |
| 41 | +.. tip:: |
| 42 | + |
| 43 | + If your bundle requires PHP 5.5 or higher, you can also take advantage of |
| 44 | + the ``CLASS`` constant:: |
| 45 | + |
| 46 | + use FOS\HttpCacheBundle\FOSHttpCacheBundle; |
| 47 | + |
| 48 | + // ... |
| 49 | + public function getBundleDependencies() |
| 50 | + { |
| 51 | + return array(FOSHttpCacheBundle::CLASS); |
| 52 | + } |
0 commit comments