Skip to content

Commit 07f86ea

Browse files
committed
[HttpKernel] Added env & debug to Bundle dependencies method
1 parent f5b3578 commit 07f86ea

9 files changed

+43
-18
lines changed

src/Symfony/Component/HttpKernel/Bundle/BundleDependenciesInterface.php

+12-6
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,18 @@ interface BundleDependenciesInterface
4242
* ```php
4343
* class AcmeBundle extends Bundle implements BundleDependenciesInterface
4444
* {
45-
* public function getBundleDependencies()
45+
* public function getBundleDependencies($environment, $debug)
4646
* {
4747
* // If you need to specify some bundle dependencies as optional you can achieve this using class_exits:
48-
* // $dependencies = array();
49-
* // if (class_exists('FOS\UserBundle\FOSUserBundle'))
50-
* // $dependencies[] = 'FOS\UserBundle\FOSUserBundle';
48+
* $dependencies = array();
49+
* if (class_exists('FOS\UserBundle\FOSUserBundle'))
50+
* $dependencies[] = 'FOS\UserBundle\FOSUserBundle';
5151
*
52-
* return array(
52+
* // If you need to load some bundles only in dev using $environment (or in $debug)
53+
* if ($environment === 'dev')
54+
* $dependencies[] = 'Egulias\SecurityDebugCommandBundle\EguliasSecurityDebugCommandBundle';
55+
*
56+
* return $dependencies + array(
5357
* // All values must be FQN strings to avoid bundles being loaded several times
5458
* 'FOS\HttpCacheBundle\FOSHttpCacheBundle',
5559
*
@@ -60,10 +64,12 @@ interface BundleDependenciesInterface
6064
* }
6165
* ```
6266
*
67+
* @param string $environment The current environment
68+
* @param bool $debug Whether to debugging is enabled or not
6369
*
6470
* @return string[] An array of bundle class (FQN) names as strings.
6571
*
6672
* @api
6773
*/
68-
public function getBundleDependencies();
74+
public function getBundleDependencies($environment, $debug);
6975
}

src/Symfony/Component/HttpKernel/Kernel.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,7 @@ protected function registeredDependencies()
567567
*/
568568
protected function appendDependenciesRecursively(array $children, array &$bundles, array $rootBundles, array $stack)
569569
{
570+
;
570571
while (!empty($children)) {
571572
$dependencyFQN = array_shift($children);
572573
if (isset($bundles[$dependencyFQN])) {
@@ -589,7 +590,7 @@ protected function appendDependenciesRecursively(array $children, array &$bundle
589590
if ($dependency instanceof BundleDependenciesInterface) {
590591
$stack[$dependencyFQN] = true;
591592
$this->appendDependenciesRecursively(
592-
$dependency->getBundleDependencies(),
593+
$dependency->getBundleDependencies($this->environment, $this->debug),
593594
$bundles,
594595
$rootBundles,
595596
$stack

src/Symfony/Component/HttpKernel/Tests/Fixtures/BundleDependencies/BundleADependenciesNon.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
class BundleADependenciesNon implements BundleDependenciesInterface
1717
{
18-
public function getBundleDependencies()
18+
public function getBundleDependencies($environment, $debug)
1919
{
2020
return array();
2121
}

src/Symfony/Component/HttpKernel/Tests/Fixtures/BundleDependencies/BundleBDependenciesA.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
class BundleBDependenciesA implements BundleDependenciesInterface
1717
{
18-
public function getBundleDependencies()
18+
public function getBundleDependencies($environment, $debug)
1919
{
2020
return array('Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleADependenciesNon');
2121
}

src/Symfony/Component/HttpKernel/Tests/Fixtures/BundleDependencies/BundleCDependenciesBA.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@
1515

1616
class BundleCDependenciesBA implements BundleDependenciesInterface
1717
{
18-
public function getBundleDependencies()
18+
public function getBundleDependencies($environment, $debug)
1919
{
20+
if ($environment === 'prod_test')
21+
return array();
22+
else if ($debug)
23+
return array('Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleADependenciesNon');
24+
2025
return array(
2126
'Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleBDependenciesA',
2227
'Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleADependenciesNon',

src/Symfony/Component/HttpKernel/Tests/Fixtures/BundleDependencies/BundleDDependenciesE.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
class BundleDDependenciesE implements BundleDependenciesInterface
1717
{
18-
public function getBundleDependencies()
18+
public function getBundleDependencies($environment, $debug)
1919
{
2020
return array('Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleEDependenciesD');
2121
}

src/Symfony/Component/HttpKernel/Tests/Fixtures/BundleDependencies/BundleEDependenciesD.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
class BundleEDependenciesD implements BundleDependenciesInterface
1717
{
18-
public function getBundleDependencies()
18+
public function getBundleDependencies($environment, $debug)
1919
{
2020
return array('Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleDDependenciesE');
2121
}

src/Symfony/Component/HttpKernel/Tests/Fixtures/BundleDependencies/BundleFDependenciesMissing.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
class BundleFDependenciesMissing implements BundleDependenciesInterface
1717
{
18-
public function getBundleDependencies()
18+
public function getBundleDependencies($environment, $debug)
1919
{
2020
return array('Symfony\Component\HttpKernel\Tests\Fixtures\BundleDependencies\BundleMissing');
2121
}

src/Symfony/Component/HttpKernel/Tests/KernelTest.php

+18-5
Original file line numberDiff line numberDiff line change
@@ -768,16 +768,27 @@ public function getRegisteredDependenciesData()
768768
array($bA, $cBA),
769769
array($aNon, $bA, $cBA),
770770
),
771+
array(
772+
array($cBA),
773+
array($cBA),
774+
'prod_test'
775+
),
776+
array(
777+
array($cBA),
778+
array($aNon, $cBA),
779+
'test',
780+
true
781+
),
771782
);
772783
}
773784

774785
/**
775786
* @dataProvider getRegisteredDependenciesData
776787
*/
777-
public function testRegisteredDependencies(array $dependencies, array $expected)
788+
public function testRegisteredDependencies(array $dependencies, array $expected, $environment = 'test', $debug = false)
778789
{
779790
// use test kernel so we can test registeredDependencies() directly
780-
$kernel = $this->getKernelForTest(array('registerBundles'));
791+
$kernel = $this->getKernelForTest(array('registerBundles'), $environment, $debug);
781792
$kernel
782793
->expects($this->once())
783794
->method('registerBundles')
@@ -949,14 +960,16 @@ protected function getKernel(array $methods = array(), array $bundles = array())
949960
/**
950961
* Returns a mock for the abstract kernel.
951962
*
952-
* @param array $methods Additional methods to mock (besides the abstract ones)
963+
* @param array $methods Additional methods to mock (besides the abstract ones)
964+
* @param string $environment The current environment
965+
* @param bool $debug Whether to debugging is enabled or not
953966
*
954967
* @return KernelForTest|\PHPUnit_Framework_MockObject_MockObject
955968
*/
956-
protected function getKernelForTest(array $methods = array())
969+
protected function getKernelForTest(array $methods = array(), $environment = 'test', $debug = false)
957970
{
958971
$kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest')
959-
->setConstructorArgs(array('test', false))
972+
->setConstructorArgs(array($environment, $debug))
960973
->setMethods($methods)
961974
->getMock();
962975
$p = new \ReflectionProperty($kernel, 'rootDir');

0 commit comments

Comments
 (0)