diff --git a/.gitignore b/.gitignore index 7883b5f..37c4382 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ composer.phar vendor/* .idea/* /phpunit.xml +var/cache/* \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index dfd9973..1c47159 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,13 @@ language: php php: - - 7.0 - - 7.1 - 7.2 + - 7.3 + - 7.4 matrix: include: - - php: 7.0 + - php: 7.2 env: dependencies=lowest before_script: diff --git a/composer.json b/composer.json index 8a05788..21343d1 100644 --- a/composer.json +++ b/composer.json @@ -15,17 +15,17 @@ } }, "require": { - "php": "~7.0", + "php": "~7.2", "php-di/php-di": "~6.0", - "symfony/dependency-injection": "~3.3||~4.0", - "symfony/http-kernel": "~3.3||~4.0", - "symfony/proxy-manager-bridge": "~3.3||~4.0", - "symfony/config": "~3.3||~4.0" + "symfony/dependency-injection": "~3.4||~4.4||~5.1", + "symfony/http-kernel": "~3.4||~4.4||~5.1", + "symfony/proxy-manager-bridge": "~3.4||~4.4||~5.1", + "symfony/config": "~3.4||~4.4||~5.1" }, "require-dev": { "phpunit/phpunit": "^4.8", - "symfony/filesystem": "^3.0", - "symfony/yaml": "^3.0", - "symfony/debug": "^3.0" + "symfony/filesystem": "~3.4||~4.4||~5.1", + "symfony/yaml": "~3.4||~4.4||~5.1", + "symfony/error-handler": "~3.4||~4.4||~5.1" } } diff --git a/src/Kernel.php b/src/Kernel.php index 701f5eb..a482b28 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -10,9 +10,10 @@ namespace DI\Bridge\Symfony; use Psr\Container\ContainerInterface; -use Symfony\Component\Debug\DebugClassLoader; +use Symfony\Component\Debug\DebugClassLoader as LegacyDebugClassLoader; use Symfony\Component\DependencyInjection\Compiler\CheckExceptionOnInvalidReferenceBehaviorPass; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\ErrorHandler\DebugClassLoader; /** * Customization of Symfony's kernel to setup PHP-DI. @@ -78,25 +79,35 @@ protected function initializeContainer() private function removeInvalidReferenceBehaviorPass(ContainerBuilder $container) { $passConfig = $container->getCompilerPassConfig(); - $compilationPasses = $passConfig->getRemovingPasses(); - foreach ($compilationPasses as $i => $pass) { - if ($pass instanceof CheckExceptionOnInvalidReferenceBehaviorPass) { - unset($compilationPasses[$i]); - break; + $compilationPassRemover = static function (array $compilationPasses): array { + foreach ($compilationPasses as $i => $pass) { + if ($pass instanceof CheckExceptionOnInvalidReferenceBehaviorPass) { + unset($compilationPasses[$i]); + break; + } } - } - $passConfig->setRemovingPasses($compilationPasses); + return $compilationPasses; + }; + + $passConfig->setRemovingPasses($compilationPassRemover($passConfig->getRemovingPasses())); + $passConfig->setAfterRemovingPasses($compilationPassRemover($passConfig->getAfterRemovingPasses())); } private function disableDebugClassLoader() { - if (!class_exists(DebugClassLoader::class)) { + if (class_exists(DebugClassLoader::class)) { + DebugClassLoader::disable(); + + return; + } + + if (!class_exists(LegacyDebugClassLoader::class)) { return; } - DebugClassLoader::disable(); + LegacyDebugClassLoader::disable(); } /** diff --git a/tests/FunctionalTest/ContainerAwareTest.php b/tests/FunctionalTest/ContainerAwareTest.php index d2163ac..bfcfba0 100644 --- a/tests/FunctionalTest/ContainerAwareTest.php +++ b/tests/FunctionalTest/ContainerAwareTest.php @@ -14,7 +14,7 @@ /** * @coversNothing */ -class ContainerAwareInterfaceTest extends AbstractFunctionalTest +class ContainerAwareTest extends AbstractFunctionalTest { /** * @link https://github.com/PHP-DI/Symfony-Bridge/issues/2 diff --git a/tests/FunctionalTest/Fixtures/config/class1.yml b/tests/FunctionalTest/Fixtures/config/class1.yml index 11d0c80..83fc34a 100644 --- a/tests/FunctionalTest/Fixtures/config/class1.yml +++ b/tests/FunctionalTest/Fixtures/config/class1.yml @@ -2,4 +2,4 @@ services: class1: class: DI\Bridge\Symfony\Test\FunctionalTest\Fixtures\Class1 public: true - arguments: [ '@DI\\Bridge\\Symfony\\Test\\FunctionalTest\\Fixtures\\Class2' ] + arguments: [ '@DI\Bridge\Symfony\Test\FunctionalTest\Fixtures\Class2' ]