![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/vendor/rector/rector/src/DependencyInjection/Laravel/ |
<?php declare (strict_types=1); namespace Rector\DependencyInjection\Laravel; use RectorPrefix202410\Illuminate\Container\Container; use Rector\Util\Reflection\PrivatesAccessor; /** * Helper service to modify Laravel container */ final class ContainerMemento { /** * @api * @see https://tomasvotruba.com/blog/removing-service-from-laravel-container-is-not-that-easy */ public static function forgetTag(Container $container, string $tagToForget) : void { // 1. forget instances $taggedClasses = $container->tagged($tagToForget); foreach ($taggedClasses as $taggedClass) { $container->offsetUnset(\get_class($taggedClass)); } // 2. forget tagged references $privatesAccessor = new PrivatesAccessor(); $privatesAccessor->propertyClosure($container, 'tags', static function (array $tags) use($tagToForget) : array { unset($tags[$tagToForget]); return $tags; }); } public static function forgetService(Container $container, string $typeToForget) : void { // 1. remove the service $container->offsetUnset($typeToForget); // 2. remove all tagged rules $privatesAccessor = new PrivatesAccessor(); $privatesAccessor->propertyClosure($container, 'tags', static function (array $tags) use($typeToForget) : array { foreach ($tags as $tagName => $taggedClasses) { foreach ($taggedClasses as $key => $taggedClass) { if (\is_a($taggedClass, $typeToForget, \true)) { unset($tags[$tagName][$key]); } } } return $tags; }); } }