patrickkerrigan/php-di

View on GitHub
src/Resolver/InternalClassResolver.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace Pkerrigan\Di\Resolver;

use Pkerrigan\Di\ClassResolver;
use Pkerrigan\Di\Injector;
use Pkerrigan\Di\InjectorInterface;
use Pkerrigan\Di\ResolvedClass;
use Pkerrigan\Di\ResolvedClass\Singleton;
use Psr\Container\ContainerInterface;

/**
 * Lightweight dependency injector
 * 3 Clause BSD Licence
 * @author Patrick Kerrigan (patrickkerrigan.uk)
 * @since 13/03/16
 */
class InternalClassResolver implements ClassResolver
{
    private $internalMappings;

    public function __construct()
    {
        $this->internalMappings = [
            InjectorInterface::class => new Singleton(Injector::class),
            ContainerInterface::class => new Singleton(Injector::class)
        ];
    }

    public function resolveConcreteClass(string $className): ?ResolvedClass
    {
        return $this->internalMappings[$className] ?? null;
    }
}