PHP 8.2.31
Preview: ContainerMemento.php Size: 1.70 KB
//opt/cpanel/ea-wappspector/vendor/rector/rector/src/DependencyInjection/Laravel/ContainerMemento.php

<?php

declare (strict_types=1);
namespace Rector\DependencyInjection\Laravel;

use RectorPrefix202411\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;
        });
    }
}

Directory Contents

Dirs: 0 × Files: 1

Name Size Perms Modified Actions
1.70 KB lrw-r--r-- 2024-11-08 13:59:10
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).