diff --git a/src/Container/ConfigProvider.php b/src/ConfigProvider.php similarity index 56% rename from src/Container/ConfigProvider.php rename to src/ConfigProvider.php index 6751d2bbe..960aa7bb3 100644 --- a/src/Container/ConfigProvider.php +++ b/src/ConfigProvider.php @@ -2,10 +2,7 @@ declare(strict_types=1); -namespace PhpDb\Container; - -use PhpDb\Adapter\AdapterInterface; -use PhpDb\Adapter\AdapterServiceFactory; +namespace PhpDb; final class ConfigProvider { @@ -20,8 +17,8 @@ public function getDependencies(): array { return [ 'factories' => [ - AdapterInterface::class => AdapterServiceFactory::class, - AdapterManager::class => AdapterManagerFactory::class, + Adapter\AdapterInterface::class => Container\AdapterServiceFactory::class, + Container\AdapterManager::class => Container\AdapterManagerFactory::class, ], ]; } diff --git a/src/Adapter/AdapterAbstractServiceFactory.php b/src/Container/AdapterAbstractServiceFactory.php similarity index 63% rename from src/Adapter/AdapterAbstractServiceFactory.php rename to src/Container/AdapterAbstractServiceFactory.php index f8229d1c4..19a8d5379 100644 --- a/src/Adapter/AdapterAbstractServiceFactory.php +++ b/src/Container/AdapterAbstractServiceFactory.php @@ -1,9 +1,13 @@ getConfig($container); if (empty($config)) { @@ -38,14 +39,20 @@ public function canCreate(ContainerInterface $container, $requestedName) /** * Create a DB adapter - * - * @param string $requestedName - * @return Adapter */ - public function __invoke(ContainerInterface $container, $requestedName, ?array $options = null) + public function __invoke(ContainerInterface $container, string $requestedName, ?array $options = null): AdapterInterface { - $config = $this->getConfig($container); - return new Adapter($config[$requestedName]); + $manager = $container->get(AdapterManager::class); + $driverFactory = ($manager->get(DriverInterfaceFactoryFactoryInterface::class))($container, $requestedName); + $driverInstance = $driverFactory::createFromConfig($container, $requestedName); + $platformFactory = ($manager->get(PlatformInterfaceFactoryFactoryInterface::class))(); + + //$config = $this->getConfig($container); + return new Adapter( + $driverInstance, + $platformFactory::fromDriver($driverInstance), + $manager->get(ResultSetInterface::class), + ); } /** diff --git a/src/Adapter/AdapterServiceDelegator.php b/src/Container/AdapterServiceDelegator.php similarity index 91% rename from src/Adapter/AdapterServiceDelegator.php rename to src/Container/AdapterServiceDelegator.php index ffba58cc4..e521b5255 100644 --- a/src/Adapter/AdapterServiceDelegator.php +++ b/src/Container/AdapterServiceDelegator.php @@ -2,9 +2,12 @@ declare(strict_types=1); -namespace PhpDb\Adapter; +namespace PhpDb\Container; use Laminas\ServiceManager\Exception\ServiceNotFoundException; +use PhpDb\Adapter\AdapterInterface; +use PhpDb\Adapter\AdapterAwareInterface; +use PhpDb\Exception; use Psr\Container\ContainerInterface; use function sprintf; diff --git a/src/Adapter/AdapterServiceFactory.php b/src/Container/AdapterServiceFactory.php similarity index 94% rename from src/Adapter/AdapterServiceFactory.php rename to src/Container/AdapterServiceFactory.php index d11c9fd05..2e38763e6 100644 --- a/src/Adapter/AdapterServiceFactory.php +++ b/src/Container/AdapterServiceFactory.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PhpDb\Adapter; +namespace PhpDb\Container; use PhpDb\Adapter\AdapterInterface; use PhpDb\Container\AdapterManager; diff --git a/src/Container/ConnectionInterfaceFactoryFactoryInterface.php b/src/Container/ConnectionInterfaceFactoryFactoryInterface.php new file mode 100644 index 000000000..aeedefa9f --- /dev/null +++ b/src/Container/ConnectionInterfaceFactoryFactoryInterface.php @@ -0,0 +1,9 @@ +